[[20171016143631]] 『マクロでファイル名を指定して保存したい』(ぱるる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでファイル名を指定して保存したい』(ぱるる)

エクセル表で、毎週提出しなければいけない報告書があります。
ファイル名には、規則性があり頭に毎週月曜日の日付が入ります。
例:20171023報告書【氏名】.xlsx

ファイル保存とすると自動で、例のような感じのファイル名で自動で保存される方法が知りたいです。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


VBAでFormat関数を調べてみてください。
(カリーニン) 2017/10/16(月) 14:49

Sub test()

Dim TargetPath As String
Dim myFname As String

 Application.DisplayAlerts = False
  myFname = Format(Now, "YYYYMMDD")
   TargetPath = ThisWorkbook.Path
    ActiveWorkbook.SaveAs TargetPath & "\" & _
      myFname & "報告書名前.xlsx", _
       FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
         Unload Me

End Sub
(GSX) 2017/10/16(月) 15:04


Unload Me ??
(とおりすがり) 2017/10/16(月) 15:32

GSXさんのコードだと、月曜日にするという条件が抜けていますね。 そして、マクロ入りブックをxlsx形式で保存しようとすると、マクロが記録できないから、という理由でエラーになってしまうでしょう。

保存したいシートが特定できるならば、シートを新規ブックにコピーした後、任意の形式で保存できますが、月曜日付のブック内に今回のマクロが必要なのか、それとも不要なのか、どういう使い方を想定しているのかを教えてください。

とりあえず、月曜日のファイル名文字列を作るだけならば、以下のようにすれば良いでしょう。 そして、THisWorkbookの Workbook_BeforeClose 時にコードを書く事で、ブックを閉じる際に自動保存するようにできるでしょう。

    Dim cw As String
    cw = Format(DateAdd("d", 2 - Weekday(Now), Now()), "YYYYMMDD") & "報告書【氏名】.xlsx"
(???) 2017/10/16(月) 16:08

???様

エクセルファイルには、1つのシートしか存在していません。
そのシートに、1週間分の作業内容を書くようになっています。
ファイル名は、毎週月曜日の日付+報告書【氏名】と決められています。
GSXさんのですと月曜日に報告書を作成を忘れなければ月曜日の名前にはなりますが
2回目からは使用できませんでした。←違う理由?

なので、火曜日にファイルを作成しても必ずその週の月曜日になるようにしたいです。
(ぱるる) 2017/10/25(水) 08:27


 >毎週月曜日の日付
具体的にいつの月曜???
「今日」を含む週の月曜?
「先週」の月曜?
シート上の決まったセルに書かれている日付?
マクロ実行時に改めて入力した日付?

「今日」を基準で作ると、割と遡って書く場合も多いから、
融通が利かないんですよねー

週報のようですから、シート上のどこかに日付データがあると思うので、
それを元に「日付を示す文字列」を生成したらいいのかな?

それから、
間違って同じ週を保存しようとしたら、
強制的に上書きしてもいいのかな?
プログラムを作るってことは、
そういう本筋で無いこともいろいろ考えないといけません。
(まっつわん) 2017/10/25(水) 08:38


GSXさんのコードは、先に書いた通り、月曜に実行したときしか月曜の日付を返さないですよ。 私の指摘を見てないのでしょうか?(拡張子の指摘も無視されたし、全く見てないのでしょうねぇ。がっかりです…)

そして、私の書いたコードなら、月曜に実行しても火曜に実行しても、月曜の日付を返しますよ。ちょっと手抜きなのは、日曜だと前の月曜ではなく、次の月曜になってしまう点ですが、実用上問題がないだろうと思います。
(???) 2017/10/25(水) 09:19


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.