2017-02-08 22 views
0

ファイルをPDFとして保存しようとしています。私の元のコードはWord Interop SaveAs2をPDFとして

.SaveAs2(savepath & "Packing Lists - " & soNumber & ".pdf", Word.WdSaveFormat.wdFormatPDF, AddToRecentFiles:=True, ReadOnlyRecommended:=True) 

...これは私が私のコードに変更をしようとしているものです。.. Word文書として保存するために働く

Imports Word = Microsoft.Office.Interop.Word 
Public Class Form1 
Private Sub Form1_Load(ByVal sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
Dim objDoc As Word.Document = objWordApp.Documents.Open(appPath & "\PackListTemplate.dotm", [ReadOnly]:=True) 
     objDoc = objWordApp.ActiveDocument 
     With objDoc 

...

.SaveAs2(FileName:=savepath & soNumber & "_" & localDateTimeFileName & ".doc", AddToRecentFiles:=True, ReadOnlyRecommended:=True) 

問題は、「アプリケーションとして保存」というダイアログボックスがポップアップするということです。これは自動化されているため理想的ではありません。私がFileName:=を使用するとき、私は期待どおりすべてが機能します。しかし、私がPDF保存でそのビットを使用すると、何らかの理由で私のWord.WdSaveFormat.wdFormatPDFが好きではありません。 WにはWordという下線が引かれています。

ここでは何が欠けていますか?何か助けてください!

+0

を、問題は次の... 'OをobjDoc.WdSaveFormat.wdFormatPDF'エラー "名前付き引数が必要" – Flibertyjibbet

+0

と赤い下線 '' Word.WdSaveFormat.wdFormatPDF'として宣言し、close(false)を使用して終了しました。なんらかの理由で、私はテンプレートを閉じたときに保存したくないと指定する必要はなく、ドキュメントタイプのファイルを生成していました。 – Flibertyjibbet

答えて

0

Interopは、MS Officeのインストール時に登録されたCOMライブラリを使用します。これは、プログラムを使って文書を操作しようとしているマシンがMS Officeをインストールしている限り機能します。より良いアプローチは、MS Officeをインストールしなくてもテンプレート文書とデータをマージすることができるツールキットを使用することです(サーバーなど)。テンプレートWord文書を準備し、書式を設定し、最終文書にデータを表示させる場所にプレースホルダを配置する必要があります。次に、.NETアプリケーションでデータを準備し、テンプレートドキュメントとデータに基づいてドキュメント生成を呼び出します。作成されたドキュメントは、docx、pdf、xpsファイルとして保存することも、これらの形式のいずれかでクライアントにストリーミングすることもできます。詳細は、hereの例をご覧ください。結局、それは最終文書を取得するためのコードの2つだけの行を取りますobjDocを示しで、私は文を使用してからコードを抜け出すとき

// Instancing report engine, by assigning the data source 
DocumentGenerator dg = new DocumentGenerator(DataAccess.GetOrderById(7)); 
// Generating report by specifying the report template and the resulting report (as file paths) 
dg.GenerateDocument("example.docx", "example_output.docx"); 
関連する問題