こんにちわ。
ExcelでVBAをかいています。
まず実現したいこと
・現在テキストファイルを選択できるダイアログが開きますが、ファイルを選択するダイアログにしたい
・選択するフォルダには「東京」か「大阪」の文字がファイル名についたテキストファイルが複数あります。それらすべてのテキストファイルを開き、ファイル名に「東京」がついているものと「大阪」のついているもので処理を変えたいです。
都道府県フォルダを選択し、そのなかにある「01東京.txt」「02東京.txt」「大阪02.txt」「000大阪.txt」のファイルを全て開き違った処理を行いたいため、ファイル名を取得しif文で分岐させたいといったものです。
結果的には「東京」の名の付くテキストファイルは処理により必要な部分を抜き出し「東京.csv」に、
「大阪」の名の付くテキストファイルは処理により必要な部分を抜き出し「大阪.csv」に出力させたいです。
今は以下のように単純にマクロ自身がいる場所のフォルダを開きテキストファイルを選択させます。
vba
1ChDir ThisWorkbook.Path & "\" 2OpenFileName = Application.GetOpenFilename("テキストファイル,*.txt")
これを、自身が存在する同じファイルを開きフォルダを選択させたいです。
この時フォルダ内にあるファイルの名前を取得させたいです。
今はOpenFileNameにファイル名が入ってくるので
VBA
1 2If InStr(OpenFileName, "東京") <> 0 Then 3 A処理 4Else 5 B処理 6End if 7
で分岐させています。
フォルダを選択し、フォルダ内のファイル一つひとつを開き「東京」ならAの処理「大阪」ならBの処理とするにはどうかけばよいのでしょうか?
フォルダを開くダイアログを調べたのですが、たくさんあって今回の場合どれを選べばいいのかよくわかりません…。
アドバイス、よろしくお願いいたします
追記
VBA
1 Set folderName = Application.FileDialog(msoFileDialogFolderPicker) 2 folderName.Show 3 4 'ファイルを開くダイアログ 5 Set objFS = CreateObject("Scripting.FileSystemObject") 6 Set objFD = objFS.GetFolder(folderName) 7 8 For Each OpenFileName In objectFD.Files 9 Next
For Each OpenFileName In objectFD.Filesでどうしてもエラーが出ます
パスが見つかりませんとでます
フォルダのパスがうまくとれていないのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/20 07:37