• ベストアンサー

ブックに可変のファイル名テキストファイルからデータを取り込みたい

こんにちは 昨日質問させていただいた、コードを修正して 開かれるファイル名が可変である場合にも対応させたいのですが、"*"をもちいてみてもうまく行きません。 どの様に指定するのかご存知の方教えてください。 "\Fuji.txt"これを\****.txt \*.txtとやってみましたがダメでした。 なお、041221_fuji.txtのように日付を6桁と"_"を入れてfujiとしたく、日付の6桁の数字のみ変えたいのです。 それを下記のコードに盛り込みたいのですが、何が足りないのかうまく行きません。 宜しくお願いします。 Sub ReadTxt() Dim myTxtFile As String Dim myBuf As String, wkdt() As String Dim i As Integer, j As Integer Application.ScreenUpdating = False myTxtFile = ActiveWorkbook.Path & "\Fuji.txt" Worksheets("郵便番号").Activate Open myTxtFile For Input As #1 Do Until EOF(1) Line Input #1, myBuf wkdt = Split(myBuf, vbTab) 'データをセルに展開する i = i + 1 For j = 0 To UBound(wkdt) Cells(i, j + 1) = wkdt(j) Next j Loop Close #1 End Sub

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

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

Dirを使ったら如何でしょう。 >myTxtFile = ActiveWorkbook.Path & "\Fuji.txt" これを myTxtFile = Dir(ActiveWorkbook.Path & "\*Fuji.txt") if myTxtFile = "" then exit sub myTxtFile = ActiveWorkbook.Path & "\" & myTxtFile

shinarin
質問者

お礼

早速のアドバイス有難うございます。 思い通りに動きました。 このコードを使わせてもらいます。

その他の回答 (2)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.2

方法としてソースをそのまま使い修正追加するなら。 Sub ReadTxt() Dim myTxtFile, Fn As String Dim myBuf As String, wkdt() As String Dim i As Integer, j As Integer Application.ScreenUpdating = False Fn=inputbox("ファイル名は?") myTxtFile = ActiveWorkbook.Path & "\" & Fn & ".txt" Worksheets("郵便番号").Activate Open myTxtFile For Input As #1 Do Until EOF(1) Line Input #1, myBuf wkdt = Split(myBuf, vbTab) 'データをセルに展開する i = i + 1 For j = 0 To UBound(wkdt) Cells(i, j + 1) = wkdt(j) Next j Loop Close #1 End Sub

shinarin
質問者

お礼

アドバイス有難うございます。 ボックスが出てきてファイル名を入れないと動かないので、完全オートと行かないのが残念です。 でもこんなやり方もあるんですね。 参考になりました。 有難うございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

下記を参考に。 Sub etst01() d = Date s = Format(d, "yymmdd") fn = s & "fuji.txt" MsgBox fn End Sub

shinarin
質問者

お礼

アドバイスありがとうございます。 惜しいのですが、日付が今日とは限らない所が 苦しいところなんです。 色々このアイデアを引用してIf文にしてみたりしましたが、難しく日付を取るのはギブアップしました。 ありがとうございます。

関連するQ&A