Сначала вставьте изображение с его шириной и высотой по умолчанию, а затем проверьте его соотношение сторон и т. Д. c. Также вам необходимо исправить ошибки. Попробуйте следующее ...
EDIT : обратите внимание, что код был изменен так, что для каждой ячейки в A1: I60 сначала проверяется ошибка, а затем проверяется пробел ячейка, затем он проверяет colorindex, а затем проверяет, что путь и имя файла верны. Если это так, он вставляет изображение. В противном случае появляется сообщение о том, что файл не найден, а также путь и имя файла, которые он не может найти. После завершения тестирования вы можете удалить окно сообщения.
Sub INSERTPICTURES()
Dim shp As Shape
Dim ws As Worksheet
For Each ws In Worksheets
With ws
Dim cella As Range
'ActiveWorkbook.SaveAs (ThisWorkbook.Path & "\" & Range("L2") & "\2_handover\CONDITION_SURVEY_REPORT\SURVEY_REPORT_" & Range("L2") & ".xlsm")
For Each cella In .Range("a1:i60").Cells
If Not IsError(cella) Then
If Len(cella) > 0 Then
If cella.Interior.ColorIndex = 48 Then
If FileExists(cella.Value) Then
Set shp = ws.Shapes.AddPicture(Filename:=cella, LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, Left:=cella.MergeArea.Left, Top:=cella.MergeArea.Top, Width:=-1, Height:=-1) 'default width and height
With shp
.Name = cella.Value
If .Width > .Height Then
.LockAspectRatio = msoFalse
.Width = cella.MergeArea.Width
.Height = cella.MergeArea.Height
Else
'set .LockAspectRatio to msoFalse
'set width to fixed value
'set height to fixed value
End If
End With
'ActiveSheet.Hyperlinks.Add cella, cella.Value
Else
MsgBox "File not found:" & vbCrLf & vbCrLf & cella.Value, vbExclamation
End If
End If
End If
End If
Next cella
End With
Next ws
End Sub
Public Function FileExists(ByVal sFullname As String) As Boolean
'returns True if file exists, otherwise it returns False
'sFullname must contain both the path and filename (ie. c:\users\domenic\documents\sample.jpg)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
FileExists = fso.FileExists(sFullname)
Set fso = Nothing
End Function
Надеюсь, это поможет!