• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでワード文書をPDF保存)

エクセルVBAでワード文書をPDF保存

このQ&Aのポイント
  • エクセル2016のワークシート上にオブジェクトの挿入でワードの文書ファイルをアイコンで貼り付けています。VBAでこの文書ファイルを開き、PDFとして保存しようと思います。
  • 参照設定を行い、VBAコードを作成しましたが、「オブジェクトが必要です」のエラーが発生し、PDF保存ができません。
  • どのようにすればオブジェクトを取得し、PDFとして保存することができるでしょうか?ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

> すでに他のワードが開いている場合はいかがすればよろしいでしょうか? 多分ブックに挿入しているファイルを開いた時のWord文書の名前は ○○.xlsm 内の Word 文書 といったブック名を含んだ名前になっていると思います。 そのようなWord文書が他に開いていないとして For i = 1 To objWord.Documents.Count If objWord.Documents(i).Name Like ThisWorkbook.Name & "*" Then objWord.Documents(i).ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objWord.Documents(i).Close If objWord.Documents.Count = 0 Then objWord.Quit End If Exit For End If Next ThisWorkbook.Name & "*内の*" などでもいいと思います。

emaxemax
質問者

お礼

なんどもありがとうございます。 とても勉強になりました。 これからもご指導のほどよろしくお願い申し上げます。

emaxemax
質問者

補足

以下で思ったようにできました。 本当にありがとうございました。 Sub Test02() Dim objWord As Word.Application Dim FileName As String FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Worksheets("Sheet1").OLEObjects(1).Verb xlVerbOpen Set objWord = GetObject(Class:="Word.Application") 'Wordファイルが複数開いていてる対応 For i = 1 To objWord.Documents.Count If objWord.Documents(i).Name Like ThisWorkbook.Name & "*" Then objWord.Documents(i).ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objWord.Documents(i).Close If objWord.Documents.Count = 0 Then objWord.Quit End If Exit For End If Next End Sub

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.2

一部無駄がありました。 Sub Test() Dim objWord As Word.Application Dim o As Object Dim FileName As String FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Set o = Worksheets("Sheet1").OLEObjects(1) o.Verb xlVerbOpen Set objWord = GetObject(Class:="Word.Application") 'Wordファイルが一個しか開いていない前提です。 objWord.Documents(1).ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objWord.Documents(1).Close objWord.Quit End Sub

emaxemax
質問者

お礼

ありがとうございました!うまくいきました。 ただ、 'Wordファイルが一個しか開いていない前提です。 とありますが、すでに他のワードが開いている場合はいかがすればよろしいでしょうか?

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

無駄がありそうな気もしますが、とりあえず動きます。 Sub Test() Dim objWord As Word.Application Dim objW As Word.Application Dim o As Object Dim FileName As String Set objW = CreateObject("Word.Application") Set objWord = GetObject(Class:="Word.Application") FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Set o = Worksheets("Sheet1").OLEObjects(1) o.Verb xlVerbOpen 'Wordファイルが一個しか開いていない前提です。 objWord.Documents(1).ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objWord.Documents(1).Close objWord.Quit End Sub

emaxemax
質問者

お礼

ありがとうございます。 回答の方でやってみました。

関連するQ&A