アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めて質問します。
不適切があれば申し訳ございません。

教えていただきたいです。
ファイル名が日々変わる場合、以下のマクロを使用した際に
ファイル名が変ったとしてもマクロが実行できるようにするにはどうすれば良いでしょうか?
ファイル名が変るのが"日別進捗_20140814.xlsx"の日付の所です。

初歩的で誠に申し訳ございません。
教えていただければ幸いです。


-----------------------------------------------------------


Sub Macro1()
'
' Macro1 Macro
'

'
Sheets("Sheet2").Select
Windows("日別進捗_20140814.xlsx").Activate
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

A 回答 (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

としてください。
    • good
    • 4
この回答へのお礼

回答を戴き大変ありがとうございます。
さっそく試させていただきます。

感謝感謝です。

お礼日時:2014/08/17 03:39

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

みたいな具合で。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
記録するマクロしか使えず、かなりの期間悩んでおりました。
本当に本当にありがとうございます。

さっそく試させていただきます。

お礼日時:2014/08/17 03:55

蛇足ですが


日別進捗_20140814.xlsxのファイルは
メールなどで送られてくる?ほかのシステムから作成している?

ならば、日別進捗.xlsx と毎回、同じ名前で保存して
エクセルのマクロでは
日別進捗.xlsx のファイルを開く
シートをコピペする。
日別進捗.xlsx を閉じる

の繰り返し作業の方が楽だと思うのですが。
    • good
    • 1
この回答へのお礼

ご回答有難うございます。
日別進捗_20140814.xlsxのファイルは他のシステムから作成され
上記ファイルを日々貼り付けていくのですが、時間効率もあり
マクロで簡単な方法がないかと探しておりました。
有難うございました。

お礼日時:2014/08/17 03:47

No1追加です。



開いているファイルが複数あって(Book1.xlsmと該当ファイルだけであっても)必要なファイルが「日別進捗_」で始まるものが一つだけなら

For i = 1 To Workbooks.Count
If Workbooks(i).Name Like "日別進捗_*.xlsx" Then
FileName = Workbooks(i).Name
End If
Next
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A