Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Excel 2013)
PDFへの変換方法
投稿日時: 18/02/09 10:41:22
投稿者: mimimi_456

VBA初心者です。
編集者のデスクトップへエクセルをPDFに変換して保存できるようにしたいのですが、やり方がわからず困っております。
以下は検索してやりたい事のコードをコピヘしてきたものです。
Sub 名前をつけて保存()
Dim strAa As String
Dim strCa As String
Dim objNa As Object
 
'ユーザー名の取得
Set objNa = CreateObject("WScript.network")
strCa = objNa.UserName
 
'新規作成
If MsgBox("ファイル名をつけて保存しますか?", vbOKCancel) = vbOK Then
   strAa = InputBox(Prompt:="ファイル名を入力して下さい。")
   ActiveWorkbook.SaveAs Filename:="C:\Users\" & strCa & "\Desktop\" & strAa & ".xls", FileFormat:=xlExcel8
End If
End Sub

 
PDFへの変換方法を教えていただければ幸いです。

回答
投稿日時: 18/02/09 11:26:01
投稿者: sk

引用:
編集者のデスクトップへエクセルをPDFに変換して保存

---------------------------------------------------------------------
Sub subExportPDF()
 
    '変数の宣言
    Dim objWSH As Object
    Dim varFileName As Variant
    Dim strDesktopPath As String
     
    '保存確認
    If MsgBox("ファイル名をつけて保存しますか?", vbOKCancel) = vbCancel Then
        '[キャンセル]ボタンがクリックされたらプロシージャを抜ける
        Exit Sub
    End If
     
    'ファイル名の入力要求
    varFileName = VBA.InputBox(Prompt:="ファイル名を入力して下さい。")
     
    '[キャンセル]ボタンがクリックされた場合
    If varFileName = "" Then
        'プロシージャを抜ける
        Exit Sub
    End If
     
    'PDFファイルの拡張子が入力されていない場合
    If Not (varFileName Like "*.pdf") Then
        'ファイル拡張子を付加
        varFileName = varFileName & ".pdf"
    End If
     
    'デスクトップパスの取得
    Set objWSH = CreateObject("WScript.Shell")
    strDesktopPath = objWSH.SpecialFolders("Desktop") & "\"
    Set objWSH = Nothing
     
    'デスクトップパスとファイル名を結合してフルパスに
    varFileName = strDesktopPath & varFileName
         
    'デスクトップ上に同名のファイルが存在する場合
    If Dir(varFileName) <> "" Then
        '上書き確認
        If MsgBox("同名のファイルが存在します。上書き保存しますか?", _
                  vbYesNo + vbQuestion + vbDefaultButton2, _
                  "上書き確認") = vbNo Then
            '[いいえ]ボタンがクリックされたらプロシージャを抜ける
            Exit Sub
        End If
    End If
     
    'PDFファイルとしてエクスポート
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
                                       Filename:=varFileName, _
                                       Quality:=xlQualityStandard, _
                                       OpenAfterPublish:=True
     
End Sub
---------------------------------------------------------------------

投稿日時: 18/02/09 11:31:28
投稿者: mimimi_456

早速の回答ありがとうございます。
PDFへ変換できました!厚かましいのは承知でもうひとつ教えてください。
全てのシートをPDFへ変換するのではなく編集したシートのみをPDFに変換して保存することも可能でしょうか?

回答
投稿日時: 18/02/09 11:39:25
投稿者: sk

引用:
全てのシートをPDFへ変換するのではなく編集したシートのみを
PDFに変換して保存することも可能でしょうか?

ブック全体ではなく任意のワークシート単体を出力対象とする場合は、
Workbook オブジェクトの ExportAsFixedFormat メソッドではなく
Worksheet オブジェクトの ExportAsFixedFormat メソッドを使用して下さい。
 
引用:
'PDFファイルとしてエクスポート
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
                                   Filename:=varFileName, _
                                   Quality:=xlQualityStandard, _
                                   OpenAfterPublish:=True

'アクティブシートをPDFファイルとしてエクスポート
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                Filename:=varFileName, _
                                Quality:=xlQualityStandard, _
                                OpenAfterPublish:=True

回答
投稿日時: 18/02/09 11:53:40
投稿者: mattuwan44

仮想プリンターとして動くPDF変換ソフトがフリーであります。
 
それを使うとアプリのデータでも印刷する要領でPDFに変換できますので、
応用の幅が広いと思います。
 
そういうのも何種類か用意しておくのもありだと思います。
 
あと、エクセルなら(MSオフィス全般?)、名前を付けて保存のところで、
ファイルの種類をPDFで選ぶことが可能ですので、
そこでPDFとして保存するのもありだと思います。
 
1つのシートだけでいいなら、新しいブックにシートごとコピーしてPDFで保存
 

投稿日時: 18/02/09 12:09:32
投稿者: mimimi_456

ありがとうございます。
コピペしたら私がやりたかったっこと全て出来るようになってました!
 
ありがとうございました。