[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『【マクロ】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(月) 17:04
これはどうですか? (´・ω・`) 2021/10/25(月) 17:15
(´・ω・`)
URLまでありがとうございます!
む、難しいですね…ループ?なるものを利用するのですね…
(シャリ) 2021/10/25(月) 17:24
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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.