連携 指定シートをPDFファイルにして保存

VB&VBA
FROG ふろっぐ
 
  • オプション

    本文印刷

    お気に入りに追加

  • 検索

    Googlewwwjp-ia
     

    Googlewwwjp-ia
     
  • 情報

  • 関連

[VB&VBA][連携 指定シートをPDFファイルにして保存]
無料オープンソース[PDFCreator]を導入する(使う)
http://sourceforge.net/projects/pdfcreator/

試したものは PDFCreator-1_1_0_setup.exe (17.5 MB)

黄緑の[Download Now!]ボタンでダウンロードできる。

PDFCreator-1_1_0_setup.exeを実行する。

コントロールパネルのプリンタと FAXに「PDFCreator」が追加され、これ単体でも使える。
(プリンターと同じように扱え印刷の替わりにPDFファイルが生成される)

エクセルマクロで扱うためのソースが
http://www.excelguru.ca/node/21
に公開されているので参考にしました。
Option Explicit


Sub MakingPDF()
'*****************************************
'実行コード
'*****************************************
'PDFCreator.exeの参照設定が不可の場合は終了
If PDFCreatorFromFile = False Then Exit Sub
'作成実行
PrintToPDF_Early
End Sub


Function PDFCreatorFromFile() As Boolean
'*****************************************
'PDFCreator.exe参照設定
'*****************************************

    Dim objName As String

    'PDFCreator.exeの場所
    objName = "C:\Program Files\PDFCreator\PDFCreator.exe"

    If Dir(objName) = "" Then
        MsgBox "「PDFCreator.exe」が見つかりません!", vbCritical, "参照設定Error!"
        PDFCreatorFromFile = False
    Else
        ThisWorkbook.VBProject.References.AddFromFile (objName)
        PDFCreatorFromFile = True
    End If

End Function


Sub PrintToPDF_Early()
'*****************************************
'選択中のシートをPDFファイルに変換する
'*****************************************
'無料オープンソース[PDFCreator]
'http://sourceforge.net/projects/pdfcreator/
'参考ソース
'http://www.excelguru.ca/node/21
'PDFCreator参照設定必要
'試した動作環境:XP HE SP3,EXCEL2000(VB6.0)


    Dim PDFオブジェクト As PDFCreator.clsPDFCreator
    Dim PDFファイル名 As String
    Dim PDF作成パス As String

    '作成するPDFファイル名指定
    PDFファイル名 = "テスト.pdf" '日本語OK
    'そのPDFファイルの保存場所
    PDF作成パス = ActiveWorkbook.Path & Application.PathSeparator
    'PathSeparator:(\) を返す
    '※パスを個別に指定する場合、日本語に対応するか不明

    '空の値の場合は終了(シート空白)
    If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
    'IsEmpty:Empty 値の場合に、真 (True) を返す
    'UsedRange:指定されたワークシートで使われたセル範囲 (Range オブジェクト) を返す

    Set PDFオブジェクト = New PDFCreator.clsPDFCreator

    'PDFCreatorへの命令
    With PDFオブジェクト
        If .cStart("/NoProcessingAtStartup") = False Then '(※注意)
            MsgBox "PDFCreatorが初期化されていません!", vbCritical + _
                    vbOKOnly, "PDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = PDF作成パス
        .cOption("AutosaveFilename") = PDFファイル名
        .cOption("AutosaveFormat") = 0    ' 0 = PDF
        .cClearCache
    End With
    '(※注意)PDFCreatorが挙動がおかしく動作しない場合は
    'タスクマネージャープロセスからPDFCreatorを強制終了させる。
    'タスクマネージャー[alt]+[ctrl]+[del]

    '印刷実行プリンターは「PDFCreator」を選択
    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

    'オペレーティング システムに制御
    Do Until PDFオブジェクト.cCountOfPrintjobs = 1
        DoEvents
    Loop
    PDFオブジェクト.cPrinterStop = False

    'オペレーティング システムに制御
    Do Until PDFオブジェクト.cCountOfPrintjobs = 0
        DoEvents
    Loop

    'PDFCreator閉じる
    PDFオブジェクト.cClose

    'PDFCreator開放
    Set PDFオブジェクト = Nothing
End Sub







Production Japan Import Application. Since 1998