私はExcel 2007のためのマクロを取得しようとしている画像の束とフォルダを開きます。次に、新しいブックを作成し、そのブックにイメージを埋め込みます。新しいワークブックを開いてVBAでイメージを追加する方法は?
すべては私がラインSheet.Shapes.AddPicture FileName:=F, linktofile:=msoFalse, savewithdocument:=msoCTrue, Left:=cell.Left + 5, Top:=cell.Top + 5, Width:=560, Height:=310
をコメントアウトした場合、私はその行のコメントを解除した場合、私が得る作品「実行時エラー 『434』:オブジェクトが必要」
を私はSheet.Shapesは、シェイプオブジェクトを返すされていることを確認しました、 Shapesオブジェクトは空ですが、それは空です。 Sheet.Shapes、AddPictureマクロの外で開いたブックにしようとすると、イメージが追加されます。また、Sheet.Shapes.AddShapeがマクロで開かれたワークブックで動作することを確認しました。
この時点で、私はその問題の可能性を失っています。誰かがこのようなことを経験していますか?別の方法を使用すべきですか?助けや指導に感謝します。
Sub Macro1()
Dim ImagePath, Flist
ImagePath = GetFolder()
If ImagePath = "" Then Exit Sub
Flist = FileList(ImagePath)
Name = "C:\target.xlsm"
Set Book = Workbooks.Add
Set Sheet = Book.Sheets(1)
For i = 1 To 5
cell = "C" + CStr(i)
F = ImagePath + "\" + Flist(i - 1)
Sheet.Shapes.AddPicture FileName:=F, linktofile:=msoFalse, _
savewithdocument:=msoCTrue, Left:=cell.Left + 5, Top:=cell.Top + 5, Width:=560, Height:=310
Next
Book.SaveAs FileName:=Name, FileFormat:=52
Book.Close
End Sub
Function FileList(ByVal fldr As String) As Variant
'Lists all the files in the current directory
'Found at http://www.ozgrid.com/forum/showthread.php?t=71409
Dim sTemp As String, sHldr As String
If Right$(fldr, 1) <> "\" Then fldr = fldr & "\"
sTemp = Dir(fldr & "*.png")
If sTemp = "" Then
FileList = False
Exit Function
End If
Do
sHldr = Dir
If sHldr = "" Then Exit Do
sTemp = sTemp & "|" & sHldr
Loop
FileList = Split(sTemp, "|")
End Function
Function GetFolder() As String
Folder:
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "New Screenshot Folder"
.Show
num = .SelectedItems.Count
If .SelectedItems.Count = 0 Then
GetFolder = ""
Else: GetFolder = .SelectedItems(1)
End If
End With
End Function
あなたは** Name **、** cell **という名前の変数と他の予約された名前を使用しています。このため、エラーが発生します。私はいつもあなたの変数名を可変識別子で導くことをお勧めします。たとえば、整数の場合は** i **、文字列の場合は** s **、予約名は使用しないことを保証してください。 – cyberponk