FC2ブログ

記事一覧

EXCEL(2010): エクセルと同じファイル名でPDF保存するマクロ

久しぶりに簡単なマクロを組んだので備忘録。
EXCEL 2016で試作して、仕上げてテストしたのはEXCEL 2010。
多分2016でも動くんじゃないかな。

Win10には仮想プリンター『Microsoft Print to PDF』が入っていると思うが、例えばエクセルのワークシートをこれで印刷(PDF保存)しようとすると、いちいちファイル名を入れないといけない。
「PDFは違う名前にするからいいよ」という人ならいいんだが、ファイルの整理上、私はエクセルブックと同じ名前にしている。
(日付かバージョンを付け足すことはある)

そこで、EXCEL VBA(マクロ)を使って自動化する。
ソースは以下の通り。
Sub myPDFPrint()
'Excelブックと同じ名前でPDF保存します。2020/03/03 by potaiko
'https://oshiete.goo.ne.jp/qa/8391335.html
'shut0325さんの回答を元にして

ans = MsgBox("Excelブックと同じ名前でPDF保存します。(同じ名前が既にあると上書きします)", vbExclamation + vbOKCancel)
If ans <> vbOK Then Exit Sub

fpath = "C:\Users\xxxx\Desktop\" '適当な保存先のディレクトリを指定。最後に\をつける。

'''エクセルファイル名の拡張子を削除する
fname = Left(ActiveWorkbook.Name, Application.WorksheetFunction.Search(".", ActiveWorkbook.Name) - 1)

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fpath & fname & ".pdf"

ans = MsgBox("以下のファイル名で保存しました" & Chr(13) & fpath & fname & ".pdf" & Chr(13) & "フォルダを開きますか?", vbOKCancel + vbDefaultButton2)
If ans <> vbCancel Then
MySum = """c:\windows\explorer.exe"" /select, " & fpath & fname & ".pdf"    '選択状態で保存先を開く
Call Shell(MySum, vbNormalFocus)
End If

End Sub


コメントに書いているように、教えてgooのレスを参考にしたことをお断りしておく。
なお、詳しく説明するの面倒なので、意味の分からないところなどは自分で調べて欲しい。
また、動かなかろうが、大切なファイルが消えてしまおうが、フリーズしようが、私は責任を取らない。
自己責任でお願いします。

関連記事
スポンサーサイト



コメント

コメントの投稿

非公開コメント

プロフィール

potaiko

Author:potaiko
関西在住のミニベロ=ちっちゃい自転車乗りです。
ポタリングの話題と自転車いじり(いわゆるカスタム)の話題が中心。
現在の愛車は5号車(こちら)と6号車(こちら)だけ!

お約束: このブログは情報の正確さを保証するものではありません。参考にされる場合は、自己責任でお願いします。