プロが教えるわが家の防犯対策術!

【やりたい事】
PDFファイルを自動作成、保管するコードを、本サイトの指導を頂きながら
作りました。今は、決まったフォルダにしか保管は出来ません。
※コードは以下記参照

作成されるファイルは下記のように、日付が先頭に不可されます。
同PDFを

1番なら、フォルダの1番へ保管
2番なら、フォルダの2番へ保管

のうように選択して、自動で各フォルダへ保管できるコードを作りたいです。

作成された、PDFの日付にしたがって、月ごとのフォルダへ保管したいというイメージです

ご存じの方、今したら教えて下さい


【マクロにて作成されるPDF】
1番⇒20230716 鈴木さん みかん.pdf

2番⇒20230816 鈴木さん みかん.pdf

【既に作成されているフォルダ】

1番⇒7月

2番⇒8月

3番⇒9月

【コード:動きます】
Sub 先頭に日付付加ファイルをPDF出力()



Dim fileName As String

Dim TargetName As String



TargetName = Format(Date, "yyyymmdd")

fileName = "C:\Users\Owner\Desktop\月ごとフォルダ\7月\" & TargetName & " " & Worksheets("入力シート").Range("A1") & "さん" & " " & Range("A2") & ".pdf"


Sheets("Sheet1").ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName 'sheet1をPDF出力


End Sub

A 回答 (4件)

No.2です。



>参考に以下、コード作りました。が、動きませんでした。
>誤りコードあれば教えて下さい。

私が回答に書いたコードをそのまま使ってもよかったのですが、きちんと理解するために「m月」という変数を使って、ここに月から導かれるフォルダ名を格納するという方法をおとりになったのだと思いいます。

そこまではよかったのでが、「変数名」と「文字列」の使い分けができていません。filename = "C:\Users\Owner\・・・・のコードに誤りがあります。

あくまでも「m月」は変数名ですので、正しいコードは

fileName = "C:\Users\Owner\Desktop\月ごとフォルダ\" & m月 & "\" & TargetName & " " & Worksheets("入力シート").Range("A1") & "さん" & " " & Range("A2") & ".pdf"

です。
    • good
    • 1
この回答へのお礼

素早い回答ならびに1~10まで
指導ありがとうございます。

文字列としての変数の為
普通の文字列と同じように
アンドにて、つなげるんですね

ターゲットネームっていう変数も
同じ要領にてつなげているのに
気付きました

認識違っていればご指導下さい
いつもご指導ありがとうございます

お礼日時:2023/08/16 18:31

No1です。



>他の保存してあったファイルまで、消えたり、
>上書きされたりはしませんでしょうか???
同じファイル名で出力すれば、当然のことながら上書きされます。
VBAの構文等での通常のエラーの範囲であれば、消えることはないと思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

参考に以下、コード作りました。が、動きませんでした。
誤りコードあれば教えて下さい。

Sub 先頭に日付付加ファイルをPDF出力()



Dim fileName As String

Dim TargetName As String

Dim m月 As String


TargetName = Format(Date, "yyyymmdd")

m月 = Format(Date, "m月")




fileName = "C:\Users\Owner\Desktop\月ごとフォルダ\ m月 \" & TargetName & " " & Worksheets("入力シート").Range("A1") & "さん" & " " & Range("A2") & ".pdf"


Sheets("Sheet1").ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName 'sheet1をPDF出力


End Sub

お礼日時:2023/08/16 14:13

>1番なら、フォルダの1番へ保管


>2番なら、フォルダの2番へ保管

という説明ですが、何が、あるいはどこが1番なのでしょうか?

(1)PDFファイルのファイル名の先頭に日付が付加され、1番、2番という「番号」が何かまたはどこかにあるらしいこと
(2)フォルダは7月,8月,9月の3つが既に作成済みであり、こちらも1番、2番、3番という「番号」が何かまたはどこかにあるらしいこと

は理解できますが、1番、2番・・・という番号と、ファイル、フォルダの関係性が説明されていません。

No.1さんの回答のように、ファイル名の「月」とフォルダ名の「月」を一致させて保存するということなら、保存するパス名をNo.1さんの回答に沿って、Format(Date, "m月")で取得して、保存するファイルのパスを変更すればよいので、fileName =・・・・・・のコードを

fileName = "C:\Users\Owner\Desktop\月ごとフォルダ\" & Format(Date, "m月") & "\" & TargetName & " " & Worksheets("入力シート").Range("A1") & "さん" & " " & Range("A2") & ".pdf"

に修正すればよいだけです。

説明不足でよく判らない「番号」は無視して、回答してしまいましたが、上記処理には、1番、2番は何処にも登場しません。
仮に、上記の処理がご質問者が知りたいことだとすると、ご質問者の説明に何故、1番、2番・・・が登場するのか全く判りません。
    • good
    • 0
この回答へのお礼

1~10まで丁寧にアドバイスありがとうございます。

参考に以下、コード作りました。が、動きませんでした。
誤りコードあれば教えて下さい。

Sub 先頭に日付付加ファイルをPDF出力()



Dim fileName As String

Dim TargetName As String

Dim m月 As String


TargetName = Format(Date, "yyyymmdd")

m月 = Format(Date, "m月")




fileName = "C:\Users\Owner\Desktop\月ごとフォルダ\ m月 \" & TargetName & " " & Worksheets("入力シート").Range("A1") & "さん" & " " & Range("A2") & ".pdf"


Sheets("Sheet1").ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName 'sheet1をPDF出力


End Sub

お礼日時:2023/08/16 13:46

こんにちは



私にはご質問の文章がよく理解できないので、勝手に以下と解釈してみました。

「実行する際の日付に応じて、保存フォルダを「〇月」と月別に分けたい」
(月の数値は、1、2・・・10、11、12で前ゼロではない)

もしも、それでよいのなら、日付を附しているのと同様に、
 Format(Date, "m月")
で、「〇月」の文字列を得ることができますので、ご提示の
> ~\月ごとフォルダ\7月\~
と固定で指定しているパスの「〇月」の部分に入るようにすれば宜しいのではないでしょうか?

※ 意味が違う場合は、スルーしてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
早速、作ってみます

なお、例えば8月フォルダには既に
PDFが、沢山、保存されているのですが

このマクロがエラーでたり失敗した
際に、他の保存してあったファイルまで、消えたり、上書きされたりは
しませんでしょうか???

なお、当たり前ですが、質問の
責任は全てこちらにありますので

気軽に答えて欲しいです

お礼日時:2023/08/16 12:52

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

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