- ベストアンサー
変更されるファイル名のファイルの開き方
お世話になります。 VBAである別のWorkbookのファイルを開きたいのですが、 開きたいファイルのファイル名が不定期に変わります。 「○月○日○時○分集計表.xls」見たいな感じです。 こう言う場合の開く方法がどうしても分かりませんでした。 どなたか、ご教示頂きたく宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>よくファイル名を確認しましたら、20080909_13時50分集計表 >というような具合でした。 yyyymmdd_hh時mm分集計表.xlsという形すればよいでしょうか? Sub myfileopen() '年が格納されます。'最近のデータであればif処理必要なし '値をを固定したい場合はyear_yyyy =2008という用にしてください。 year_yyyy = Year(Date) '月が格納されます。また10未満の値には頭に0を追加します。 '値をを固定したい場合はmonth_mm =09という用にしてください。 month_mm = Month(Date): If month_mm < 10 Then month_mm = "0" & month_mm '日が格納されます。また10未満の値には頭に0を追加します。 '値をを固定したい場合はday_dd =09という用にしてください。 day_dd = Day(Date): If day_dd < 10 Then day_dd = "0" & day_dd '時が格納されます。また10未満の値には頭に0を追加します。 '値をを固定したい場合はhour_hh=13という用にしてください。 hour_hh = Hour(Time): If hour_hh < 10 Then hour_hh = "0" & hour_hh '分が格納されます。また10未満の値には頭に0を追加します。 '値をを固定したい場合はminute_mm=50という用にしてください。 minute_mm = Minute(Time): If minute_mm < 10 Then minute_mm = "0" & minute_mm 'ファイルが格納されているフォルダのパス folderpath = "c:\" '順に結合します。 filepath = folderpath & year_yyyy & month_mm & day_dd & "_" & hour_hh & "時" & minute_mm & "分集計表.xls" 'ファイルパスを確認します(削除して構いません) MsgBox filepath 'ファイルを開きます Workbooks.Open Filename:=filepath End Sub 変数を個別に定義して前回より噛み砕いて書きましたがどうでしょうか? 処理違いや補足・修正が欲しい場合言ってください。
その他の回答 (3)
- kunkun_129
- ベストアンサー率64% (16/25)
任意のフォルダを作成し、その中に好きな名前の○○○・XLSを保存しておきます。 たとえば、c:\work のフォルダに保存した場合は 下のソースの内容になります。 Dim File_Collection As Object Dim File_List As Variant Set File_Collection = CreateObject("Scripting.FileSystemObject").GetFolder("c:\work").Files For Each File_List In File_Collection Workbooks.Open Filename:="c:\work\" & File_List.Name ここに処理 Workbooks(File_List.Name).Close Next 注意は、任意のフォルダに1個のエクセルファイルを保存した時は、 そのファイルしか処理されません。 しかし、その中に別のエクセルファイルとかがある場合でかつ 処理をしたくないファイルがある時は、ある程度の判定処理を下の様にいれて下さい。 「○月○日○時○分集計表.xls」見たいに「・・・・分集計表.xls」だけ処理したい場合は For Each File_List In File_Collection if instr(File_List.Name,"分集計表.xls")>0 then Workbooks.Open Filename:="c:\work\" & File_List.Name ここに処理 Workbooks(File_List.Name).Close end if Next これの良いところは、ファイル名をある程度自由な名前につけても処理が出来る事です。 極端なはなし、全くファイル名が予測出来ない名前でも、特定のフォルダにそのファイル だけいれとけば、確実に処理出来る事です。
- n-jun
- ベストアンサー率33% (959/2873)
名前を指定してブックを開く http://www.officetanaka.net/excel/vba/file/file02.htm とは違うかな。
- argument
- ベストアンサー率63% (21/33)
回答です。 Workbooks.Open Filename:="C:\デスクトップ\" & Month(Date) & "月" & Day(Date) & "日" & Hour(Time) & "時" & Minute(Time) & "分集計表.xls" とまぁ全部可変にしましたが、おそらく定時的なファイルだと思うので時・分なんてのはハードコーディングで十分な気もします。 処理違いや補足・修正が欲しい場合言ってください。
お礼
早期なご回答ありがとうございます。 よくファイル名を確認しましたら、20080909_13時50分集計表 というような具合でした。 その場合はどうなりますでしょうか? 宜しくお願いします。
お礼
本当にありがとうございます。 お返事頂いていたのですね。すみません。 気づくのが遅くなりました。 大変参考になりました。 ありがとうございました。