- ベストアンサー
フォルダ内のファイルを取得する方法EXCELVBA
こんにちは、 下記フォルダの中に、ファイル名 \ABC_20140620_001というふうに、ABCは固定なのですが、日付と、連番がついたファイルが出来ます。 下記フォルダのマクロファイルから、マクロを実行させて、このファイルの固定した部分(すなわちABC)を元に、ファイルを取得(または開かせる)したいのですが、どのようなコードになるでしょうか? フォルダは、\C\XYZです。 EXCEL 2013です。
- みんなの回答 (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の「実際の内容」がどのようになってるか,よくチェックして下さい。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
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というふうに マクロを使うときは,ファイル名には,必ず「拡張子」も付いてくることをアタマに入れておいて下さい。
補足
お返事有難う御座います。 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)
http://officetanaka.net/excel/vba/file/file07.htm 上記のサイトを参考にしてください。
補足
お返事有難う御座います。 >上記のサイトを参考にしてください。 実は、見たのですが、よくわからなくて質問しました。
お礼
解りました。 有難う御座いました。