0
我的函數需要讀取MS Word文檔,替換某些文本,然後另存爲PDF。 閱讀和保存PDF的效果很好。 但我不知道如何使用Word對象模型替換文本。如何使用Word對象模型以編程方式替換Word文檔中的文本
這是我的word_to_PDF()函數完成的。
Function word_to_PDF(Word_source_filepath, PDF_destin_filepath)
Dim wordApplication As ApplicationClass = New ApplicationClass()
Dim wordDocument As Document = Nothing
Dim paramExportFilePath As String = PDF_destin_filepath
Dim paramExportFormat As WdExportFormat = _
WdExportFormat.wdExportFormatPDF
Dim paramOpenAfterExport As Boolean = False
Dim paramExportOptimizeFor As WdExportOptimizeFor = _
WdExportOptimizeFor.wdExportOptimizeForPrint
Dim paramExportRange As WdExportRange = _
WdExportRange.wdExportAllDocument
Dim paramStartPage As Int32 = 0
Dim paramEndPage As Int32 = 0
Dim paramExportItem As WdExportItem = _
WdExportItem.wdExportDocumentContent
Dim paramIncludeDocProps As Boolean = True
Dim paramKeepIRM As Boolean = True
Dim paramCreateBookmarks As WdExportCreateBookmarks = _
WdExportCreateBookmarks.wdExportCreateWordBookmarks
Dim paramDocStructureTags As Boolean = True
Dim paramBitmapMissingFonts As Boolean = True
Dim paramUseISO19005_1 As Boolean = False
' Open the source document.
On Error Resume Next
wordDocument = wordApplication.Documents.Open(Word_source_filepath) ' Microsoft.Office.Interop.Word.Document
If Err.Number Then
Debug.WriteLine(Err.Description)
log_fault("word_to_PDF: Err# " & Err.Number & " " & Err.Description)
Stop '!!!
Else
' Export it in the specified format.
If Not wordDocument Is Nothing Then
Dim FindObject As wordDocument.Find = Application.Selection.Find <<<<<<<<<<<<<<< THIS GETS ERROR: "wordDocument.Find is not defined"
With FindObject
.ClearFormatting()
.Text = "find me"
.Replacement.ClearFormatting()
.Replacement.Text = "Found"
.Execute(Replace:=Word.WdReplace.wdReplaceAll)
End With
wordDocument.ExportAsFixedFormat(paramExportFilePath, _
paramExportFormat, paramOpenAfterExport, _
paramExportOptimizeFor, paramExportRange, paramStartPage, _
paramEndPage, paramExportItem, paramIncludeDocProps, _
paramKeepIRM, paramCreateBookmarks, _
paramDocStructureTags, paramBitmapMissingFonts, _
paramUseISO19005_1)
Else
'!!! ERR
stop_if_debug()
End If
End If
' Close and release the Document object:
If Not wordDocument Is Nothing Then
wordDocument.Close(False)
wordDocument = Nothing
End If
' Quit Word and release the ApplicationClass object.
If Not wordApplication Is Nothing Then
wordApplication.Quit()
wordApplication = Nothing
End If
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
Return True