[[20241213113232]] 『VBAでワード文書をPDF化したい』(雪だるま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでワード文書をPDF化したい』(雪だるま)

VBAでWord書をPDFに変換して保存したいと思います。
保存されているWord文書はカラー文字が含まれているので、黒字に修正してPDFにしたいと思っていますが、どのようにすればいいかお知恵を貸していただけないでしょうか。

単にWord文書を開いてその色のままPDFにすることはできます。

Private Sub Conv_PDF(ByVal Path As String, ByVal Fn As String)

    Dim FilePath  As String
    Dim objOffice As Object
    FilePath = Path & "\PDF" & Left$(Fn, InStrRev(Fn, ".")) & "pdf"
    Path = Path & Fn
'
'ファイル名から拡張子取得
    Select Case Get_Extension(Fn)
''
    'Excel97-2003,Excel2007以降
        Case "xls", "xlsx", "xlsm"
            Set objOffice = Excel.Application
            With objOffice.Workbooks.Open(Path)
                .ExportAsFixedFormat Type:=xlTypePDF, _
                FileName:=FilePath, OpenAfterPublish:=False
                .Close
            End With
'
    'Word97-2003,Word2007以降 以下の部分
        Case "doc", "docx"
            Set objOffice = CreateObject("Word.Application")
            objOffice.Visible = True 
            With objOffice.Documents.Open(Path)
'
                Call AppActivate(.Windows(1).Caption & " - Word")
                Application.Wait Now() + TimeValue("00:00:01")
                .ExportAsFixedFormat OutputFileName:=FilePath, _
                ExportFormat:=17
                .Close
            End With
            objOffice.Quit
'
    'PowerPoint97-2003,PowerPoint2007以降
        Case "ppt", "pptx"
            Set objOffice = CreateObject("PowerPoint.Application")
            With objOffice.Presentations.Open(Path)
                .SaveAs FileName:=FilePath, FileFormat:=32
                .Close
            End With
            objOffice.Quit
    End Select
End Sub

< 使用 Excel:Excel2019、使用 OS:Windows11 >


PDFにする前に文書の文字色を黒くする

 Sub a()
     ActiveDocument.Range.Font.ColorIndex = wdBlack
 End Sub

だけど、これワードのマクロね。
(ゆたか) 2024/12/13(金) 12:54:14


ゆたかさん

ありがとうございます。

やはりエクセルのVBAに組み込むと、「変数が定義されていません。」というメッセージが出ます。
(雪だるま) 2024/12/13(金) 13:34:25


 こんな感じでどうですか?

 Private Sub Conv_PDF(ByVal Path As String, ByVal Fn As String)

    Dim FilePath  As String
    Dim objOffice As Object
    FilePath = Path & "\PDF" & Left$(Fn, InStrRev(Fn, ".")) & "pdf"
    Path = Path & Fn
 '
 'ファイル名から拡張子取得
    Select Case Get_Extension(Fn)
 ''
    'Excel97-2003,Excel2007以降
        Case "xls", "xlsx", "xlsm"
            Set objOffice = Excel.Application
            With objOffice.Workbooks.Open(Path)
                .ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=FilePath, OpenAfterPublish:=False
                .Close
            End With
 '
    'Word97-2003,Word2007以降 以下の部分
        Case "doc", "docx"
            Set objOffice = CreateObject("Word.Application")
            objOffice.Visible = True
            With objOffice.Documents.Open(Path)
 '                Call AppActivate(.Windows(1).Caption & " - Word")
                .Range.Font.Color = vbBlack                    '←ここ追加した。
                Application.Wait Now() + TimeValue("00:00:01")
                .ExportAsFixedFormat OutputFileName:=FilePath, _
                ExportFormat:=17
                .Close
            End With
            objOffice.Quit
 '
    'PowerPoint97-2003,PowerPoint2007以降
        Case "ppt", "pptx"
            Set objOffice = CreateObject("PowerPoint.Application")
            With objOffice.Presentations.Open(Path)
                .SaveAs Filename:=FilePath, FileFormat:=32
                .Close
            End With
            objOffice.Quit
    End Select
 End Sub

(通りすがり助六) 2024/12/13(金) 15:59:55


通りすがり助六さん

うまくいきました。ありがとうございました。非常に助かりました。
(雪だるま) 2024/12/14(土) 11:40:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.