Импорт нескольких изображений с использованием пути к файлу на основе значения ячейки

#excel #vba

#excel #vba

Вопрос:

Я хочу импортировать несколько изображений на основе пути к файлу, присутствующего в столбце «C». Файлы Jpeg находятся в папке с именем «FolderOf_Images», и при запуске кода он ничего не делает, а также ошибка не была выдана. На удивление, это сработало только один раз, и все изображения были импортированы в столбец «D». Файлы изображений будут помещены в столбец D. Исходный код, который я пробовал, приведен ниже, но безуспешно.

Google driver Ссылка на файл Excel

 Sub InsertPicsIntoExcel()
'Pictures saved with file
'Set column width (ie, pic width) before running macro
Application.ScreenUpdating = False
Dim r As Range, Shrink As Long
Dim shp As Shape
Shrink = 0 'Provides negative offset from cell borders when > 0

On Error Resume Next
''''Delete existing shapes/pictures
For Each shp In ActiveSheet.Shapes
    shp.Delete
Next shp
ActiveSheet.Rows.AutoFit

''''Insert shapes/pictures
For Each r In Range("C1:C" amp; Cells(Rows.Count, 1).End(xlUp).Row)
    If r.Value <> "" Then
        Set shp = ActiveSheet.Shapes.AddPicture(Filename:=r.Value, linktofile:=msoFalse, _
        savewithdocument:=msoTrue, Left:=Cells(r.Row, "D").Left   Shrink, _
        Top:=Cells(r.Row, "D").Top   Shrink, Width:=-1, Height:=-1)
        With shp
            
            .LockAspectRatio = msoTrue
            .Width = Columns(2).Width - (2 * Shrink)
            Rows(r.Row).RowHeight = .Height   (2 * Shrink)
        End With
    End If
Next r
Application.ScreenUpdating = True

MoveAndSizeWithCells

MsgBox ("Images Import Complete.")
End Sub



Sub MoveAndSizeWithCells()
    Dim xPic As Picture
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each xPic In ActiveSheet.Pictures
        xPic.Placement = xlMoveAndSize
    Next
    Application.ScreenUpdating = True
End Sub
 

Изображение листа Excel

Комментарии:

1. И отладка вашего кода не помогла?

2. Ошибок не было, потому что вы сказали этого не делать. Удалите On Error Resume Next в каждом подразделе, и вы увидите ошибки.

3. да, я удалил . теперь он выдает ошибку времени выполнения 1004, определяемую приложением или определяемую объектом ошибку.

4. В какой строке вы получаете сообщение об ошибке?

5. Проблема в вашем имени файла. Я запустил его с правильным именем файла, и код работал нормально. Проверьте свой путь и имя файла, чтобы убедиться, что оно существует, и в нем нет ненужных пробелов или опечаток.