- ベストアンサー
エクセルマクロで不特定なファイル名を使用する方法
- エクセルマクロを使って、不特定なファイル名を取得する方法を教えてください。
- ファイル名が日々変わる場合、マクロが実行できるようにするにはどうすれば良いでしょうか?
- 初めての質問で、初歩的な内容かもしれませんが、お教えいただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
開いているファイルが「日別進捗_日付"の形で日付の部分が作業日でしたら FileName = "日別進捗_" & Format(Date, "yyyymmdd") & ".xlsx" 開いているエクセルファイルがBook1.xlsmと該当ファイルしかないのでしたら For i = 1 To Workbooks.Count If Workbooks(i).Name <> "Book1.xlsm" Then FileName = Workbooks(i).Name End If Next で、FileNameに該当ファイル名が取得できますので Windows(FileName).Activate としてください。
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
Sub Macro1() ' ' Macro1 Macro ' ' dim w as window dim flg as boolean Windows("Book1.xlsm").Activate Sheets("Sheet2").Select for each w in windows if w.caption like "日別進捗*.xls*" then w.activate flg = true exit for end if next if not flg then msgbox "日別進捗が開いていません" exit sub end if Cells.Select Selection.Copy Windows("Book1.xlsm").Activate Cells.Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Range("A1").Select Sheets("Sheet1").Select Range("D15").Select End Sub みたいな具合で。
お礼
ご回答有難うございます。 記録するマクロしか使えず、かなりの期間悩んでおりました。 本当に本当にありがとうございます。 さっそく試させていただきます。
- hallo-2007
- ベストアンサー率41% (888/2115)
蛇足ですが 日別進捗_20140814.xlsxのファイルは メールなどで送られてくる?ほかのシステムから作成している? ならば、日別進捗.xlsx と毎回、同じ名前で保存して エクセルのマクロでは 日別進捗.xlsx のファイルを開く シートをコピペする。 日別進捗.xlsx を閉じる の繰り返し作業の方が楽だと思うのですが。
お礼
ご回答有難うございます。 日別進捗_20140814.xlsxのファイルは他のシステムから作成され 上記ファイルを日々貼り付けていくのですが、時間効率もあり マクロで簡単な方法がないかと探しておりました。 有難うございました。
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1追加です。 開いているファイルが複数あって(Book1.xlsmと該当ファイルだけであっても)必要なファイルが「日別進捗_」で始まるものが一つだけなら For i = 1 To Workbooks.Count If Workbooks(i).Name Like "日別進捗_*.xlsx" Then FileName = Workbooks(i).Name End If Next
お礼
回答を戴き大変ありがとうございます。 さっそく試させていただきます。 感謝感謝です。