• ベストアンサー

フォルダ内のファイルを取得する方法EXCELVBA

こんにちは、 下記フォルダの中に、ファイル名 \ABC_20140620_001というふうに、ABCは固定なのですが、日付と、連番がついたファイルが出来ます。 下記フォルダのマクロファイルから、マクロを実行させて、このファイルの固定した部分(すなわちABC)を元に、ファイルを取得(または開かせる)したいのですが、どのようなコードになるでしょうか? フォルダは、\C\XYZです。 EXCEL 2013です。

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

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

>ご教示頂いたコードを参考に下記を作った 誤り: sFName1 = Dir("ABC*.xlsx") sFName1 = Replace(cFullName, "123r1", sFName1) ’★ 回答を参考にするなら: dim myPath as string mypath = "C*\XYZ\" sfname1 = mypath & dir(mypath & "ABC*.xlsx") msgbox sfname1 #参考 ★の1行は,回答したのとは全然別のアプローチなので特にどーしたらいいとかは言いませんが,仮にその前段のdirで正しいsFName1を取得できてたとしても,その記述では正しい結果にはなりません。 自作の方針をそのまま維持したいなら,その次のmsgboxでsfname1の「実際の内容」がどのようになってるか,よくチェックして下さい。

noname#196865
質問者

お礼

解りました。 有難う御座いました。

その他の回答 (2)

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

sub macro1()  dim myPath as string  dim myFile as string  mypath = "C:\XYZ\"  myfile = dir(mypath & "ABC*.xlsx")  do until myfile = ""   msgbox myfile  ’workbooks.open filename:=mypath & myfile  ’activeworkbook.close false   myfile = dir()  loop end sub みたいな。 #参考 >ファイル名 \ABC_20140620_001というふうに マクロを使うときは,ファイル名には,必ず「拡張子」も付いてくることをアタマに入れておいて下さい。

noname#196865
質問者

補足

お返事有難う御座います。 C:\XYZ\123r1.xlsmのマクロを実行させて、20140620_001.xlsxファイルの中のシートをC:\XYZ\123r1.xlsmにコピーしたいです。 ご教示頂いたコードを参考に下記を作ったのですが、うまく動作しません。 どこが悪いのでしょうか? Sub test() Const cFullName As String = "C:\XYZ\123r1.xlsm" Dim sFName1 As String Dim wb1 As Workbook sFName1 = Dir("ABC*.xlsx") sFName1 = Replace(cFullName, "123r1", sFName1) MsgBox sFName1 & vbLf & "を開きます。" On Error Resume Next Set wb1 = Workbooks.Open(sFName1) On Error GoTo 0 If wb1 Is Nothing Then MsgBox sFName1 & vbLf & "は存在しませんでした。" Else wb1.Sheets(1).Copy ThisWorkbook.Sheets(1) wb1.Close False End If End Sub

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.1

http://officetanaka.net/excel/vba/file/file07.htm 上記のサイトを参考にしてください。

noname#196865
質問者

補足

お返事有難う御座います。 >上記のサイトを参考にしてください。 実は、見たのですが、よくわからなくて質問しました。

関連するQ&A

専門家に質問してみよう