[[20200128103816]] 『PDF作成時に日付と保存された時刻を入力したいのax(yomogi) ページの最後に飛ぶ

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

 

『PDF作成時に日付と保存された時刻を入力したいのです』(yomogi)

こんにちは。
いつもわからないことがあればこの掲示板を参考にさせてもらっています。
エクセルマクロ初心者ですが、私なりにいろいろ調べて、作成した見積書を
PDFで保存するマクロを組んでみましたが、
いざ実施してみると、同じファイル名となったものは、自動的に上書きされて
しまうことがわかりました。

自分なり考えたところ、PDF化された日付と時刻をファイル名に設定できれば、
同じものは存在せず、全て保存出来るようになるのではと思い、試行錯誤しましたが、
上手くいかず、ご相談させていただく次第です。
是非ともご教示いただければと思います。
また、他に良い方法がありましたらアドバイスをお願いします。

 作成したマクロ
==================================
Private Sub PDF保存_Click()
Dim MyName As String

MyName = ThisWorkbook.Path & _
"\" & _
Format(Range("AV2").Value, "yyyymmdd") & _
"見積書#" & _
Range("I6").Value

ActiveSheet.ExportAsFixedFormat _

 Type:=xlTypePDF, _
 Filename:=MyName

End Sub
==================================

 ※ セル「AV2」には、TODAY関数によってセットされた、
   「日付(yyyy/mm/dd)が表示されています。

宜しくお願い申し上げます。

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


 フォーマットを"yyyymmddhhmmss"とかにして
おいて、Range("AV2")を再計算すればいける
のではないでしょうか。
(隠居じーさん) 2020/01/28(火) 11:11

    MyName = ThisWorkbook.Path & "\見積書#" & _
             Me.Range("I6").Value & "_" & _
             Format(Me.Range("AV2").Value, "YYYYMMDD") & _
             "(" & Format(Now(), "YYYYMMDDHHNNSS") & ")"

こんな感じではいかがでしょうか?

(まっつわん) 2020/01/28(火) 11:21


被りましたが、動かしてみたところ、ちゃんと「20200128見積書#test.pdf」等を出力しました。

しかしながら、AV2セル参照だと、AV2セルを再計算した時点の日時を記憶したままなので、現在時間にはならないです。 なので、まっつわんさんの書いたように、マクロ内で日時を得る必要があるでしょうね。
(???) 2020/01/28(火) 11:26


 そもそもTODAY関数だと日付のみで時刻部分は0になる。
(ねむねむ) 2020/01/28(火) 11:30

すみません ^^ ねむねむ さん
のご指摘通りです。
ありがとうございました。w最近調子が悪いです ← 歳? ( ̄▽ ̄)
いやもとからだろ〜が。。。はい!すみません。
m(_ _)mm(_ _)mm(_ _)m
(隠居じーさん) 2020/01/28(火) 11:56

横からですが
>同じファイル名となったものは、自動的に上書きされてしまう
問題点が↑なら、先に該当ファイルが存在する化チェックして、存在する場合のみ別名で保存するルーチンを組み込むのはどうでしょうか?
    Sub 実験01()
        Dim 保存パス As String, tmp As String

        With ActiveSheet       
            保存パス = ThisWorkbook.Path & "\" & Format(.Range("AV2").Value, "yyyymmdd") & "見積書#" & .Range("I6").Value

            tmp = Dir(保存パス & ".pdf")
            Do Until tmp = ""
                保存パス = 保存パス & "(1)"
                tmp = Dir(保存パス & ".pdf")
            Loop

            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=保存パス
        End With
    End Sub

まぁ、みなさんが指摘されているように、now関数で時刻まで含めて取得し、秒までファイル名にすればかぶることは無さそうですが・・・

    Sub 実験02()
        Dim 保存パス As String, tmp As String

        With ActiveSheet       
            保存パス = ThisWorkbook.Path & "\" & Format(Now, "yyyymmdd_hhmmss") & "見積書#" & .Range("I6").Value
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=保存パス
        End With
    End Sub

(もこな2) 2020/01/28(火) 12:12


みなさま 早速のご指導有難うございます。
取り急ぎは「もなこ2」様からいただきました方法で無事に乗り越えられそうです。
現在、マクロ勉強中ですので、皆様に教えていただきましたことを全て実行してみます。
いろいろと勉強になります。また、他にも良い方法があればご教示ください。
よろしくお願いいたします。
(yomogi)
(yomogi) 2020/01/28(火) 13:02

コメント返信:

[ 一覧(最新更新順) ]


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