top of page

​タグ一覧

配列処理(67)

階層化フォーム(33)

ファイル操作(23)

シート・セル操作(11)

コード自動生成(10)

ユーザーフォーム(8)

図形操作(7)

GAS(5)

アニメーション(5)

技術解説(4)

副業(4)

考え方(4)

条件付き書式(4)

イミディエイトウィンドウ(3)

Enum(3)

Googleスプレッドシート(3)

ココナラ(3)

クリップボード(3)

介護(3)

開発効率化(2)

イベントプロシージャ(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Excel(2)

Excel小ネタ(2)

数学(2)

Outlook(2)

文字列操作(2)

小説(2)

HTML(2)

JavaScript(2)

日報(2)

カレンダー(2)

パズル(2)

ステータスバー(1)

コード解析(1)

静的変数(1)

OneDrive(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

六角形(1)

Excel遊び(1)

ボウリング(1)

時計(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

イベント(1)

溶接ロボット(1)

VBA(1)

脱Excel(1)

Discord(1)

ECサイト(1)

CSV(1)

楽天(1)

保育士(1)

シフト表(1)

CDP(1)

楽天市場(1)

経理(1)

javascript(1)

医療(1)

文書作成(1)

LookerStudio(1)

シフト(1)

セキュリティ(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

罫線(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

開発事例(1)

シートをPDFで出力する


<概要>


 今回は、特定のシートの印刷範囲をPDFで出力する汎用プロシージャを紹介します。

 

 PDF出力は取引先へのメール添付や、データの保管用として頻繁に行う作業です。手動で行うには印刷プレビューで「Microsoft Print to PDF」を設定して印刷で可能ですが、保存先フォルダやファイル名を毎回指定するのは手間です。

 

 紹介する汎用プロシージャでは保存先フォルダ、ファイル名を引数で指定できます。なので、「ファイル名が顧客ごとに変わる」「保存先のフォルダが日付ごとに異なる」などの場合でも簡単に自動化が出来ます。


<用途>


  • PDF出力の自動化



<プロシージャ紹介>


Public Sub OutputPDF(Sheet As Worksheet, FolderPath As String, FileName As String, [Message As Boolean = True])


名前: OutputPDF /Subプロシージャ

説明: 指定シートをPDFで出力する



引数

Sheet ・・・PDF化する対象のシート

FolderPath・・・出力先フォルダパス

FileName ・・・出力PDFのファイル名

[Message] ・・・出力確認のメッセージを表示するかどうか

省略なら表示する


<実行例>


 次のようなワークシートを用意します。ワークシートのオブジェクト名は「Sheet2」です。


ree

 コードは次のようなものを用意します。

Public Sub TestOutputPDF()
    Dim FolderPath As String: FolderPath = "C:\Test"
    Dim FileName   As String: FileName = "PDF出力テスト"
    Call OutputPDF(Sheet2, FolderPath, FileName, True)
End Sub

 

 出力先のフォルダパスとPDFのファイル名を引数で指定しています。

 実行すると次のようなメッセージが現れて、「はい」を押すと、PDFの出力先のフォルダが起動して出力結果をすぐ確認もできるようになっています。


ree

 


<サンプルファイル>





<コード>

 

 Gist

Public Sub OutputPDF(ByRef Sheet As Worksheet, _
                ByRef FolderPath As String, _
                  ByRef FileName As String, _
          Optional ByRef Message As Boolean = True)
'指定シートをPDFで出力する
'20210721
'20231102 出力失敗の対策追加

'参考
'https://www.softex-celware.com/post/outputpdf

'引数
'Sheet     ・・・PDF化する対象のシート
'FolderPath・・・出力先フォルダパス
'FileName  ・・・出力PDFのファイル名
'[Message] ・・・出力確認のメッセージを表示するかどうか
'                省略なら表示する
   
    '処理
    '出力するPDFのファイル名を作成する
    Dim PDFPath As String
    PDFPath = FolderPath & "\" & FileName & ".pdf"
   
    'PDFで出力する
    On Error GoTo ErrorEscape1
    Sheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=PDFPath
    
    GoTo ErrorEscape2
    
ErrorEscape1:
    '同じPDFが起動中の場合はエラーになる
    MsgBox "PDF出力に失敗しました" & vbLf & _
           "同じ名前のPDFが起動中の可能性があります", _
            vbExclamation
    
ErrorEscape2:
    
    'PDFの出力先のフォルダを起動するか確認
    Dim MessageStr As String
    If Message = True Then
        MessageStr = "「" & FileName & ".pdf" & "」" & vbLf & _
                     "を作成しました" & vbLf & _
                     "出力先フォルダを起動しますか?"
                     
        If MsgBox(MessageStr, vbYesNo + vbInformation) = vbYes Then
            Shell "C:\Windows\explorer.exe " & _
                   FolderPath, vbNormalFocus
        End If
    End If
    
End Sub

コメント

5つ星のうち0と評価されています。
まだ評価がありません

評価を追加
Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page