スポンサーリンク
Excel→PDF変換も面倒
以前に、Excelで印刷設定をあれこれ頑張るくらいなら、まずPDF変換してから印刷しようという記事を書いた。ただこの方法も、何度もやってくると結構カッタるい。
ExcelシートをPDF変換するにあたって、最短手順でやっても
②ファイルの保存形式で、一覧の中でかなり下の方にある「PDF」を選択する
という手順が必要で、特に②がまどろっこしい。
特に動作の遅いPCを使ってる人なんかは、①での応答時間が長くて②になかなか行けないだろうし、②で一覧から「PDF」を選ぶのもチマチマ面倒だろう。
あくまで、印刷程度のことでイチイチ時間を掛けたくない、楽をしたいのだ。
印刷する前にPDF変換というプロセスを踏むのは何とか譲るとして、その度に面倒なマウス操作とかを毎回しているわけにはいかない。
即PDF変換するマクロ
そこで私は、下記のマクロをExcelの個人用マクロブックに組み込んで使用している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Sub quickPDFSave() '選択されたシートを、ダイアログ等省略して即PDF変換する With Application .ScreenUpdating = False '描画省略 .DisplayAlerts = False '警告省略 End With Dim wb As Workbook Dim myPath As String Dim PDFFileName As String Dim num As Long Set wb = ActiveWorkbook 'まずExcelファイル名を取得。 '取得結果:「ファイル.xlsx」といった名前。 PDFFileName = wb.Name '拡張子の「.」文字がある位置 num = InStrRev(PDFFileName, ".") If num > 0 Then '拡張子がある→保存されているExcelファイルである場合 '拡張子の「.」文字以前のファイル名のみ取得。 '取得結果:「ファイル.xlsx」→「ファイル」といった名前に変換される。 PDFFileName = Left(PDFFileName, num - 1) myPath = wb.Path Else '拡張子がない→未保存のExcelファイルである場合 '保存フォルダを選ばせる With Application.FileDialog(msoFileDialogFolderPicker) .Filters.Clear .Title = "保存フォルダの選択" If Not .Show Then Exit Sub myPath = .SelectedItems(1) '保存フォルダ End With End If '保存するPDFのファイル名。現在時刻を付ける。 PDFFileName = myPath & "\" & PDFFileName & Format$(Now, "_yyyy年mm月dd日hh時mm分ss秒") & ".pdf" 'PDF変換 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFFileName With Application .ScreenUpdating = True '描画再開 .DisplayAlerts = True '警告再開 End With '作成したPDFファイルを開く CreateObject("Shell.Application").ShellExecute PDFFileName End Sub |
使ってみればすぐ分かるけど、動作イメージを一応解説。
単一でも良いし複数でも良いので、Excelの印刷したいシートを選択した状態で、上記の「quickPDFSave」マクロを実行しよう。
とにかく面倒を全部省略するのがコンセプトなので、確認メッセージも何も出さず即、PDF変換が実行される。
そしてソースコードのラスト、「CreateObject(~」の部分(前回の記事で紹介した、ファイルを開く構文)により、生成されたPDFが開かれる。
このPDFには、処理実行時刻がファイル名の末尾に付され、元のExcelファイルがあったのと同じフォルダに保存される。
今回取り上げたのは、いま開いているExcelファイルをさっさとPDF変換するマクロってことだけど、次回は別の角度からExcelブックをPDF変換する実用的マクロを書く。
スポンサーリンク