2017-02-08 3 views
0

파일을 PDF로 저장하려고합니다. 내 원래 코드는 ...Word Interop SaveAs2를 PDF로

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) 

내가 내 코드를 변경하려고 것입니다 .. 워드 문서로 저장하기 위해 노력

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

문제는 대화 상자로 응용 프로그램 저장이라는 단어가 나타납니다. 이것은 자동화 된 것으로 이상적이지 않습니다. 내가 FileName:=을 사용할 때 모든 것이 예상대로 작동합니다. 그러나 PDF 저장에서 해당 비트를 사용하면 어떤 이유로 인해 Word.WdSaveFormat.wdFormatPDF이 마음에 들지 않습니다. 여기에는 W의 밑줄이 Word에 있습니다.

여기에 무엇이 누락되어 있습니까?

+0

을, 문제는 다음과 ...'오을 objDoc.WdSaveFormat.wdFormatPDF' "명명 된 인수가 예상 됨"오류가있는 빨간색 밑줄 – Flibertyjibbet

+0

"Word.WdSaveFormat.wdFormatPDF"로 선언하고 close (false)를 사용하여 종료했습니다. 어떤 이유로 나는 필자가 템플릿을 닫을 때, 내가 doc 타입 파일을 생성 할 때 저장하기를 원하지 않는다고 지정할 필요가 없었습니다. – Flibertyjibbet

답변

0

Interop은 MS Office 설치시 등록 된 COM 라이브러리를 사용합니다. 프로그래밍 방식으로 문서를 조작하려고하는 시스템에 MS Office가 설치되어있는 한이 기능이 작동합니다. 더 나은 방법은 MS Office가 설치되지 않은 상태에서도 템플릿 문서와 데이터를 병합 할 수있는 툴킷을 사용하는 것입니다 (예 : 서버). 템플릿 Word 문서를 준비하고 형식을 지정하고 최종 문서에 데이터를 표시 할 위치 표시자를 배치해야합니다. 그런 다음 템플릿 문서와 데이터를 기반으로 .NET 응용 프로그램에서 데이터를 준비하고 문서 생성을 호출합니다. 결과 문서는 docx, pdf 또는 xps 파일로 저장하거나 이러한 형식으로 클라이언트에 스트리밍 할 수 있습니다. 더 자세히 알고 싶으면 here 몇 가지 예를 볼 수 있습니다. 결국 최종 문서를 얻기 위해 코드의 두 줄을 취 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");