前提
はじめまして、初心者です。
現在、Excel マクロにVBAで、プルダウンで選択した企業ごとに、"取り込む"というボタンを押せば、同一bookに新しいシートを追加して、そこにCSVファイルを取り込めるコードを書いています。
実現したいこと
現在は、取り込み先のエクセルbookと、取り込みたいCSVファイルが同じフォルダーに入っているので、Thisworkbook.pathで処理しているのですが、この複数あるCSVファイルを、GetOpenFilenameのように、選択画面など出ずに、それぞれどのドライブの、どのフォルダーに入れていても情報を取り込めるようにしたいです。
発生している問題・エラーメッセージ
path部分を指定せず、取り込めばいいのかと考え、以下のコードのpath部分を消すと”ファイルがありません”というエラーメッセージが出ます。
*同一フォルダにExcelファイルとCSVファイルがあるときのコードです。 ・ ・ path = Thisworkbook.path str = Sheet1.Range("D4") Select Case str Case "○○" buf = Dir(path & "\○○.csv") Case "△△" buf = Dir(path & "\△△.csv") ・ ・ Case Else MsgBox "選択してください" Exit Sub End Select Set fso = CreateObject("Scripting.FilesystemObject") Set csvFile = fso.OpentextFile(path & "\" & buf, 1) ・ ・ *開いた後のコードが続いていきます
試したこと
・ドライブ指定できないので、bookのみ記入
・WSHでDirコマンド実行
補足情報(FW/ツールのバージョンなど)
そもそものpath部分だけを変更すればいい問題なのか、ドライブの変更にも対応しておかなくてはいけないので、部分検索でファイル検索をして、そのファイルを別のコードでCSV→Excelに変換するべきなのか、一度所在を調べるために、pathを検索して、Msg boxなどで表示させて、それを変数に組み込むか、GetOpenFilenameを使用するしかないのかがわかりません。
いろいろ言葉の意味やVBAのコードで検索してみたのですが、フォルダ変更に対応はしていても、ドライブ変更にまで対応している事例などが見つからず、こちらで質問させていただきました。
そもそもの考え方や調べ方から間違っているのかもわからないので、よければご教示お願い致します。
回答3件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。