[[20211025155549]] 『【マクロ】PDF自動保存時の名前が重複した際の解戟x(シャリ) ページの最後に飛ぶ

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

 

『【マクロ】PDF自動保存時の名前が重複した際の解決法』(シャリ)

はじめまして。
こちらで質問させていただきます。

現在、マクロでエクセルの注文書をPDFでデスクトップに自動保存するようにしています。その際、保存するファイル名に会社名(セル指定)、今日の日付が自動で入るようにしています。
しかし、同会社名・同日で再度マクロを起動すると前のデータが上書きされてしまいます。

理想としては、同名のファイルが保存場所にあった場合、名前の後に『○○_1.pdf』、『○○_2.pdf』のように連番がファイル名に自動に入るようにしたいのですが可能でしょうか?
下記にいつも使っているコードを記載いたします。

なにぶんマクロを知ったばかりの専門用語も知らない初心者でして、質問の部分以外でも、直した方が良い部分があれば何卒ご教授いただけましたら幸いです。

よろしくお願いいたします。

Sub デスクトップPDF保存()

    Dim Desktop_Path As String
    Desktop_Path = CreateObject("WScript.Shell").SpecialFolders.Item("Desktop")

    With ActiveSheet
        .ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Desktop_Path & "\" & "注文書" & .Range("D3") & Format(Date, "yyyymmdd"), Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True

    End With
 End Sub

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


 ここの掲示板内の校内全文検索を上手につかいましょう

 保存 連番 とかのキーワードで同じような質問がでてくると思いますよ
(´・ω・`) 2021/10/25(月) 16:27

ご返信ありがとうございます。
探してみます!
(シャリ) 2021/10/25(月) 16:45

すいません、皆様が出して下さっているコードへの理解が及ばず…。同名のファイルがあった場合の指示に+1というのを組み込むのだろうなということはなんとなくわかったのですが…
(シャリ) 2021/10/25(月) 16:55

1秒に何回も出力するような状況じゃないのなら
単純に"yyyymmddhhnnss"で時間までファイル名に含める方法じゃだめですか?

(砂糖) 2021/10/25(月) 17:04


保存先に同名のファイルがあれば番号を付けて保存。
https://www.excel.studio-kazu.jp/kw/20201116151400.html
 これはどうですか?
(´・ω・`) 2021/10/25(月) 17:15

砂糖さん
ありがとうございます。
それもやってみたのですが、どうしてか例えば今日の日付だと202110250000.pdfのように日付の後に0が連なってしまい連続で保存すると上書き保存されてしまいます…

(´・ω・`)
URLまでありがとうございます!
む、難しいですね…ループ?なるものを利用するのですね…
(シャリ) 2021/10/25(月) 17:24


Date関数は日付だけなので時間まで表示させる場合はNow関数です
(砂糖) 2021/10/25(月) 17:32

ありがとうございます。
Now関数ですね、調べてみます!
(シャリ) 2021/10/26(火) 08:56

>探してみます!
結局たどり着けたのでしょうか?
方法はいくつかあるとおもいますが、例えば↓のようなアプローチもあるとおもいます。

    Sub さんぷる()
        Dim Desktop_Path As String
        Dim 保存ファイル名 As String
        Dim 枝番号 As Long

        Stop 'ブレークポイントの代わり

        Desktop_Path = CreateObject("WScript.Shell").SpecialFolders.Item("Desktop")
        With ActiveSheet
            保存ファイル名 = "注文書" & .Range("D3") & Format(Date, "yyyymmdd")
            If Dir(Desktop_Path & "\" & 保存ファイル名 & ".pdf") <> "" Then
                Do
                    枝番号 = 枝番号 + 1
                Loop Until Dir(Desktop_Path & "\" & 保存ファイル名 & "_" & 枝番号 & ".pdf") = ""               
                保存ファイル名 = 保存ファイル名 & "_" & 枝番号
            End If
        End With
        MsgBox 保存ファイル名 & ".pdf" & vbLf & "↑で保存すればOK"
     End Sub

なお、ちょっとややこしくなりますが↑をもう一ひねりすればちょこっと短くできます。

    Sub さんぷる2()
        Dim Desktop_Path As String
        Dim 保存ファイル名 As String
        Dim 枝番号 As Long

        Stop 'ブレークポイントの代わり

        Desktop_Path = CreateObject("WScript.Shell").SpecialFolders.Item("Desktop")

        With ActiveSheet
            保存ファイル名 = "注文書" & .Range("D3") & Format(Date, "yyyymmdd")
            If Dir(Desktop_Path & "\" & 保存ファイル名 & ".pdf") <> "" Then
                Do Until Dir(Desktop_Path & "\" & 保存ファイル名 & IIf(枝番号, "_" & 枝番号, "") & ".pdf") = ""
                    枝番号 = 枝番号 + 1
                Loop
            End If
        End With
        MsgBox 保存ファイル名 & IIf(枝番号, "_" & 枝番号, "") & ".pdf" & vbLf & "↑で保存すればOK"
     End Sub

(もこな2) 2021/10/26(火) 19:17


もこなさん
返信が遅れてしまい申し訳ありません。

詳しいコード記載ありがとうございます…!
ほんと初歩の初歩で申し訳ないのですが、"保存ファイル名"や"枝番号"のところを任意で変えるという認識であっているでしょうか…?
(シャリ) 2021/10/27(水) 11:33


>"保存ファイル名"や"枝番号"のところを任意で変えるという認識であっているでしょうか…?
 (1)まずは【ステップ実行】して、提示したコードを研究してみてください。

 (2)そして、何をやっているのか"理解"できたら、ご自身のコードにその仕組みを組み込んでみてください。

 (3)そのうえで、うまくいかないのであれば、(2)のコードを示したうえでどのようにうまくいかないのか説明してみてください
   (××のところで××というエラーが発生する、○○になるはずが○○という結果になってしまう等)

※なお、ステップ実行という言葉を聞いたことがなければ↓を読んでみてください。

 【ステップ実行】
https://www.239-programing.com/excel-vba/basic/basic023.html
http://plus1excel.web.fc2.com/learning/l301/t405.html

 【ブレークポイント】
https://www.239-programing.com/excel-vba/basic/basic022.html
https://www.tipsfound.com/vba/01010

また、以下も知っておいて損は無いと思います。

 【イミディエイトウィンドウ】
https://www.239-programing.com/excel-vba/basic/basic024.html
https://excel-ubara.com/excelvba1/EXCELVBA486.html

 【ローカルウィンドウ】
https://excel-ubara.com/excelvba4/EXCEL266.html
http://excelvba.pc-users.net/fol8/8_2.html

(もこな2) 2021/10/27(水) 12:13


資料までありがとうございます。
ひとつずつやってみます!
(シャリ) 2021/10/27(水) 13:44

コメント返信:

[ 一覧(最新更新順) ]


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