• ベストアンサー

VBAでパスを取得しファイル名を入力するには

EXCEL2003です。同じフォルダにVBAマクロとデータのcsvファイルがあります。このとき、マクロでパスを取得し、次にcsvファイル名を手入力あるいはそのフォルダの詳細表示からファイルをクリックすればデータを取り込めるようにしたいのですが、どなたかマクロを教えてくれないでしょうか。か。

質問者が選んだベストアンサー

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

色々と方法はありますよ。 一例です。 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

pipiruru11
質問者

お礼

ありがとうございます。 教えていただいた方法でフォルダからファイルを選択し、 データを取得できました。

その他の回答 (2)

回答No.3

これは、マクロブックと同じパスの、選択された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

pipiruru11
質問者

お礼

ありがとうございます。 教えていただいた方法は、今回はまだ必要ではありませんが、 今後必要になったときに使わせていただきます。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

作成例: 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 ファイルの指定の仕方とかは山ほどバリエーションがありますので、色々勉強してみて下さい。 同様に >データを取り込めるようにしたい どこに?どんな具合に?「取り込み」したいのか、具体的にアナタがやりたい事に応じたマクロを書いてやる必要があります。

pipiruru11
質問者

お礼

ありがとうございます。 教えていただいた方法で、ボックスにファイル名を入力し、 データを取得できました。

関連するQ&A