前提・実現したいこと
excel2013でVBAを使って、フォルダー内のファイルを全て開き、マクロを記録したファイルのデータを開いた他のファイルにコピーしたいと考えています。、フォルダー内のファイルを開くところまでコードを記入したのですが、フォルダーネームを定義するところで、以下のエラーメッセージが出ました。
発生している問題・エラーメッセージ
コンパイルエラー 引数エラーメッセージ がLeft関数に対して出ました。
該当のソースコード
ソースコード
Sub Macro5()
'
' Macro5 Macro
'
'
Dim FolderName As String
Dim index As Integer
Dim FileName As String
FolderName = Application.GetOpenFilename
If FolderName = "False" Then
Exit Sub
End If
index = InStrRev("C:\Users***\Documents\macro練習用\", "\") FolderName = Left("C:\Users***\Documents\macro練習用\" & index) FileName = Dir("C:\Users***\Documents\macro練習用\" & "*.xlsx") Do While FileName = "" Workbooks.Open FileName = Dir("C:\Users***\Documents\macro練習用\" & "*.xlsx*") Loop
End Sub
試したこと
indexで引数を記入していると、私は理解していたので、引数が足りないの意味がわからず、indexを"""で囲んでみましたがエラーメッセージは変わりませんでした。
補足情報(FW/ツールのバージョンなど)
このエラーを解決したく、よろしくお願いします。
InStrRevが返すINDEXは何を意味すると考えていますか? LEFT関数はどういうものとして考えていますか? また、「フォルダー内のファイル」は「Application.GetOpenFilename」で選んだファイルのあるフォルダを指していますか? その場合、「"C:\Users\*\Documents\macro練習用\"」と固定フォルダを指定しているのはなぜでしょうか。
エラーメッセージをそのまま全て載せていただけませんか?
エラーメッセージは「コンパイルエラー 引数は
省略できません」です。
InStrRevが返すINDEXは、フォルダー名を文字位置を数で返していると考えていました。LEFT関数は検索埼左から指定数の文字列を返すものと考えています。「Application.GetOpenFilename」と「"C:\Users\*\Documents\macro練習用\"」は同じものと考えていました。
承知しました。個々は分かっているようですが、変数や組み立て方が理解できていない感じですね。