Как я могу заставить URL-адреса изображений в столбце " C "отображать соответствующие изображения в столбце" N " в Excel?


У меня есть файл Excel с кучей столбцов, один из которых - "ImageURL", который, конечно же, отображает уникальные URL-адреса в виде текста.

Как я могу настроить его таким образом, чтобы эти изображения также были изображены в другой колонке?

Я использовал следующий макрос , но я получаю ошибку компиляции "недопустимая внешняя процедура".

Dim url_column As Range
Dim image_column As Range

Set url_column = Worksheets(1).UsedRange.Columns("C")
Set image_column = Worksheets(1).UsedRange.Columns("N")

Dim i As Long
For i = 1 To url_column.Cells.Count

  With image_column.Worksheet.Pictures.Insert(url_column.Cells(i).Value)
    .Left = image_column.Cells(i).Left
    .Top = image_column.Cells(i).Top
    image_column.Cells(i).EntireRow.RowHeight = .Height
  End With

Next

Я, к сожалению, новичок в VBA, так что, возможно, я не настроил его правильно?

2 2

2 ответа:

Хорошо, это может показаться довольно простым (без каламбура), но, основываясь на ограниченной информации, которую вы предоставили, я думаю, что причина вашей проблемы заключается в том, что вы просто вставили эти операторы в свой модуль кода и не поместили их в процедуру. Это, безусловно, даст вам ошибку компиляции "недопустимая внешняя процедура".

Вы должны поместить материал в процедуру-либо суб, либо функцию. Это дело требует замены. Попробуйте это:

Sub PlaceImageInCell()

    Dim url_column As Range
    Dim image_column As Range
    Set url_column = Worksheets(1).UsedRange.Columns("A")
    Set image_column = Worksheets(1).UsedRange.Columns("B")

    Dim i As Long
    For i = 1 To url_column.Cells.Count
      With image_column.Worksheet.Pictures.Insert(url_column.Cells(i).Value)
        .Left = image_column.Cells(i).Left
        .Top = image_column.Cells(i).Top
        image_column.Cells(i).EntireRow.RowHeight = .Height
      End With
    Next

End Sub

.Картины.Insert (stuff) не работает в XL 2007 - и я видел предложения по использованию *.Формы.Вместо этого AddPicture ().

Проблема в том, что для этого требуется строка для пути к файлу, и я недостаточно знаком с VBA, чтобы сделать эту работу.
Sub InsertImage()
    Dim urlColumn As Range
    Dim imgColumn As Range
    Dim fp as String
    Set urlColumn = Worksheets(1).UsedRange.Columns("A")
    Set imgColumn = Worksheets(1).UsedRange.Columns("B")

    Dim i As Long
    For i = 2 To urlColumn.Cells.Count
        With imgColumn.Worksheet.Shapes.AddPicture(fp, msoTrue, msoTrue, 1, 1, 12, 12)
        End With
    Next
End Sub

Конечным результатом является следующая ошибка: ошибка компиляции: Объект