- ベストアンサー
VBAでパスを取得しファイル名を入力するには
EXCEL2003です。同じフォルダにVBAマクロとデータのcsvファイルがあります。このとき、マクロでパスを取得し、次にcsvファイル名を手入力あるいはそのフォルダの詳細表示からファイルをクリックすればデータを取り込めるようにしたいのですが、どなたかマクロを教えてくれないでしょうか。か。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
色々と方法はありますよ。 一例です。 Sub ボタン1_Click() ChDir ThisWorkbook.Path Dim vntFileName As Variant vntFileName = _ Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1 _ , Title:="開く" _ , MultiSelect:=False _ ) If vntFileName <> False Then Workbooks.Open Filename:=vntFileName End If End Sub
その他の回答 (2)
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
これは、マクロブックと同じパスの、選択されたCSVファイルをシート単位でコピーするプログラム。 そのパスがファイルダイアログのデフォルトになる。ファイルは複数選択できる。 Option Explicit Sub EasyCopyCSV() Dim CSV_filename As Variant, target As Variant Dim CSV_SheetName As Variant Dim FileCount As Long Dim kk As Long ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path CSV_filename = Application.GetOpenFilename(filefilter:="CSVファイル(*.csv;*.prn),*.csv;*.prn", MultiSelect:=True) If IsArray(CSV_filename) Then Else MsgBox "キャンセルされました!" Exit Sub End If FileCount = UBound(CSV_filename) '配列のサイズからファイル数を調べる For kk = 1 To FileCount 'ファイル数カウンタ初期化しファイル数分カウンタを回す Workbooks.Open CSV_filename(kk) 'ファイルを開く CSV_SheetName = Worksheets(1).Name '開いたシートの名前=ファイル名を取得 Sheets(CSV_SheetName).Move Before:=ThisWorkbook.Sheets(1) Next End Sub
お礼
ありがとうございます。 教えていただいた方法は、今回はまだ必要ではありませんが、 今後必要になったときに使わせていただきます。
- keithin
- ベストアンサー率66% (5278/7941)
作成例: sub macro1() dim myPath as string dim myFile as string mypath = thisworkbook.path & "\" 'msgbox mypath start: myfile = inputbox("INPUT CSV FILENAME") if myfile = "" then exit sub if strconv(right(myfile,4),vblowercase) <> ".csv" then myfile = myfile & ".csv" end if if dir(mypath & myfile) = "" then msgbox "FILE NOT FOUND" goto start end if workbooks.open mypath & myfile end sub ファイルの指定の仕方とかは山ほどバリエーションがありますので、色々勉強してみて下さい。 同様に >データを取り込めるようにしたい どこに?どんな具合に?「取り込み」したいのか、具体的にアナタがやりたい事に応じたマクロを書いてやる必要があります。
お礼
ありがとうございます。 教えていただいた方法で、ボックスにファイル名を入力し、 データを取得できました。
お礼
ありがとうございます。 教えていただいた方法でフォルダからファイルを選択し、 データを取得できました。