Ну, после вашего объяснения я изменил -1 на +1. Давайте разберем проблему на части.
Во-первых, на листе ресурсов разместите свои изображения в столбце B. Задайте для каждого изображения a (название компании) в столбце A. Вы можете отрегулировать высоту строки, чтобы каждое изображение вписывалось в свой собственный ряд.
Тогда это пример того, как вы связываете имена с этими картинками:
Dim sh As Worksheet, pic As Shape
Set sh = ThisWorkbook.Worksheets("Pictures")
For Each pic In sh.Shapes
If pic.Type = msoPicture Then
Debug.Print pic.TopLeftCell.Cells(1, 0) ' print the company name
End If
Next
Теперь вы можете создать поле со списком или диалоговое окно пользователя, спросить пользователя, какая компания ему нужна, и позволить ему выбрать имя. Вот пример функции для копирования изображения с заданным именем в буфер обмена:
Function CopyLogoToClipboard(picName As String) As Boolean
Dim sh As Worksheet, pic As Shape
Set sh = ThisWorkbook.Worksheets("Pictures")
For Each pic In sh.Shapes
If pic.Type = msoPicture And pic.TopLeftCell.Cells(1, 0) = picName Then
pic.Copy
CopyLogoToClipboard = True
Exit Function
End If
Next
CopyLogoToClipboard = False
End Function
(не забудьте проверить возвращаемое значение при его использовании).
Теперь последняя часть - вставить логотип в те места, где вы хотите. Например, поместив его в верхний левый угол на активном листе:
ActiveSheet.Paste
Set pic = Selection.ShapeRange(1)
pic.Top = 0
pic.Left = 0
Надеюсь, это поможет.