VBAでFilesコレクションからオブジェクトを逆順に取得する方法
初めてVBAで開発をしている者です。
現在、フォルダ内の画像を取得し、エクセルシートに張り付けるマクロを書いています。
フォルダ内の画像を順番(昇順)に取得することは、以下のコードで実現することができました。
vba
1 For Each objFile In objFldr.GetFolder(strSelect).Files 2 Debug.Print TypeName(objFile) 3 ActiveSheet.Shapes.AddPicture _ 4 Filename:=objFile, _ 5 LinkToFile:=False, _ 6 SaveWithDocument:=True, _ 7 Left:=c.Left, _ 8 Top:=c.Top, _ 9 Width:=c.Width, _ 10 Height:=c.Height 11 count = count + 1 12 13 If flag = True Then 14 flag = False 15 Set c = c.Offset(0, 2) 16 Else 17 flag = True 18 Set c = c.Offset(3, -2) 19 End If 20 If count = 8 Then 21 Set c = c.Offset(3, 0) 22 count = 0 23 End If 24Next
しかし、画像を逆順(降順)に取得するため、以下のコードを記述した場合、エラーが発生してしまいます。
vba
1Set objFile = objFldr.GetFolder(strSelect).Files 2 Dim i As Long 3 For i = objFile.count To 1 Step -1 4 ActiveSheet.Shapes.AddPicture _ 5 Filename:=objFile.Item(i), _ 'エラーが発生している部分 6 LinkToFile:=False, _ 7 SaveWithDocument:=True, _ 8 Left:=c.Left, _ 9 Top:=c.Top, _ 10 Width:=c.Width, _ 11 Height:=c.Height 12 count = count + 1 13 14 If flag = True Then 15 flag = False 16 Set c = c.Offset(0, 2) 17 Else 18 flag = True 19 Set c = c.Offset(3, -2) 20 End If 21 If count = 8 Then 22 Set c = c.Offset(3, 0) 23 count = 0 24 End If 25 Next i
filesコレクションの要素を取得するやり方として、(filesコレクション).Itemという
書き方がそもそも違うのでしょうか?
それともfilesコレクションに対してインデックスを指定して取得することはできないのでしょうか?
解決策が見つけられず質問致しました。
稚拙な質問で申し訳ないですが、よろしくお願い致します。
発生している問題・エラーメッセージ
実行時エラー'5': プロシージャの呼び出し、または引数が不正です。
回答4件
あなたの回答
tips
プレビュー