Word操作辅助类,VB

Word操作辅助类,直接贴代码:

主要包含以下操作 :

文档操作,书签操作 ,文档属性,自定义属性,文字域 等。

代码如下:

'//打开Word文档函数

'//参数sFilePath:文档全路径+文件名

Sub OpenDoc(ByVal sFilePath As String)

If (AppName <> "Microsoft Word") Then

Set owd = CreateObject("Word.Application")

owd.Visible = True

End If

Documents.Open FileName:=sFilePath, _

ConfirmConversions:=False, _

ReadOnly:=False, AddToRecentFiles:=False, _

Revert:=False, Format:=wdOpenFormatAuto

End Sub

'//新建Word文档函数

'//参数sFilePath:文档全路径+文件名

Sub DocAdd(ByVal sFilePath As String)

Documents.Add (sFilePath)

End Sub

'//文档保存(临时保存位置)

Sub DocSaveTmp(ByVal sname As String)

Word.ActiveDocument.SaveAs FileName:=sname, FileFormat:= _

wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _

:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _

:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _

SaveAsAOCELetter:=False

End Sub

'将文档导出为PDF格式的文档

'参数sFilePath:文档全路径+文件名["C:\test.pdf"]

' bOAE:是否在导出后打开PDF文档

Sub ExportAsPDF(ByVal sFilePath As String, ByVal bOAE As Boolean)

Word.ActiveDocument.ExportAsFixedFormat OutputFileName:= _

sFilePath, ExportFormat:= _

wdExportFormatPDF, OpenAfterExport:=bOAE, OptimizeFor:= _

wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _

Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _

CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _

BitmapMissingFonts:=True, UseISO19005_1:=False

End Sub

'激活某个文档

'参数:sDocName:文档名称(全路径)

Function ActivateDocument(ByVal sDocFullName As String) As Boolean

Dim doc As Document

ActivateDocument = False

For Each doc In Word.Documents

If InStr(1, doc.FullName, sDocFullName, 1) Then

doc.Activate

'Windows(doc.Name).Activate

ActivateDocument = True

Exit Function

End If

Next doc

End Function

'取word中书签的内容

'书签名称

Function getValueinBookMark(ByVal sBMName As String) As String

If ActiveDocument.Bookmarks.Exists(sBMName) = True Then

Word.Application.ActiveDocument.Bookmarks(sBMName).Select

getValueinBookMark = CutvbCrLf(Word.Application.Selection.Range.Text)

Else

getValueinBookMark = ""

End If

End Function

'在书签位置填写内容

'参数: sBMName: 书签名称

' sContext:需要更新的内容

Function InitContentofBookMark(ByVal sBMName As String, ByVal sContext As String) As Boolean

If Word.Application.ActiveDocument.Bookmarks.Exists(sBMName) = True Then

'Word.Application.ActiveDocument.Bookmarks(sBMName).Select

'判断内容是否一样

If (Word.Application.ActiveDocument.Bookmarks(sBMName).Range.Text <> sContext) Then

Word.Application.Selection.Goto What:=wdGoToBookmark, Name:=sBMName

Word.Application.Selection.Find.ClearFormatting

Word.Application.Selection.TypeText Text:=sContext + " "

End If

InitContentofBookMark = True

Else

InitContentofBookMark = False

End If

End Function

'更新书签内容

'参数: sBMName: 书签名称

' sContext:需要更新的内容

Function UpdateContentofBookMark(ByVal sBMName As String, ByVal sContext As String) As Boolean

If Word.Application.ActiveDocument.Bookmarks.Exists(sBMName) = True Then

'判断内容是否一样

Dim wdRng As Word.Range

Set wdRng = Word.Application.ActiveDocument.Bookmarks(sBMName).Range

If (wdRng.Text <> sContext) Then

wdRng.Cut

wdRng.insertBefore (sContext + " ")

End If

UpdateContentofBookMark = True

Set wdRng = Nothing

Else

UpdateContentofBookMark = False

End If

End Function

'取word表格的内容,去除特殊字符

'参数:t table索引;r 行数;c 列数

'返回值: 表格的值,特殊情况:'-':不存在或者合并单元的内容

Function getTableCellsValue(ByVal t As Integer, ByVal r As Integer, ByVal c As Integer) As String

On Error GoTo g1:

getTableCellsValue = Word.Application.ActiveDocument.Tables(t).Cell(r, c).Range.Text

Exit Function

g1:

getTableCellsValue = "-"

End Function

'将当前文档的属性全部打印出来

Sub PrintDocumentProperties()

Dim rngDoc As Word.Range

Dim proDoc As DocumentProperty

Set rngDoc = Word.ActiveDocument.Content

rngDoc.Collapse Direction:=wdCollapseEnd

For Each proDoc In Word.ActiveDocument.BuiltinDocumentProperties

With rngDoc

.InsertParagraphAfter

.InsertAfter proDoc.Name & "= "

On Error Resume Next

.InsertAfter proDoc.value

End With

Next

'MsgBox Word.ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle).Value

End Sub

'取文档类型属性值

Function getValueOfPropertyCategory() As String

getValueOfPropertyCategory = getValueOfProperty(wdPropertyCategory)

End Function

'设置文档类型值

'参数:文档类型的值

Sub setValueOfPropertyCategory(ByVal sValue As String)

Call setValueOfProperty(wdPropertyCategory, sValue)

End Sub

'取文档属性值

'参数:属性

'返回值:属性的值

Function getValueOfProperty(ByRef PropertyName As WdBuiltInProperty) As String

getValueOfProperty = Word.ActiveDocument.BuiltinDocumentProperties(PropertyName).value

End Function

'设置文档属性值

'参数:属性,值

Sub setValueOfProperty(ByRef PropertyName As WdBuiltInProperty, ByVal sValue As String)

Word.ActiveDocument.BuiltinDocumentProperties(PropertyName) = sValue

'SendKeys '接受更改值

End Sub

'取文档自定义属性值

'参数:属性名称

'返回值:属性的值

Function getValueOfCustomProperty(ByVal sname As String) As String

If existCustomProperty(sname) Then

getValueOfCustomProperty = Word.ActiveDocument.CustomDocumentProperties(sname).value

Else

getValueOfCustomProperty = ""

End If

End Function

'新增文档自定义属性及值

'参数:属性名称,值,类型(4:文本,3:日期,2:是否,1:数字),链接

'like :addCustomProperty "url", "wwwl.80.hk", 4, False

Sub addCustomProperty(ByVal sname As String, ByVal sValue As Variant, ByVal iType As Integer, ByVal bLink As Boolean)

Word.ActiveDocument.CustomDocumentProperties.Add sname, bLink, iType, sValue

End Sub

'修改自定义属性的值

'参数:属性名称,属性值(类型一定要匹配)

Sub updateValueofCustomProperty(ByVal sname As String, ByVal vValue As Variant)

If existCustomProperty(sname) Then

Word.ActiveDocument.CustomDocumentProperties(sname).value = vValue

End If

End Sub

'删除文档自定义属性

'参数:自定义属性的名称

Sub deleteCustomProperty(ByVal sname As String)

If existCustomProperty(sname) Then

Word.ActiveDocument.CustomDocumentProperties(sname).Delete

End If

End Sub

'是否存在自定义属性

'参数:sCustomPropertyName:自定义属性名称

'返回值:True:存在,False:不存

Function existCustomProperty(ByVal sCustomPropertyName As String) As Boolean

Dim myCustomProperty As Variant

existCustomProperty = False

For Each myCustomProperty In Word.ActiveDocument.CustomDocumentProperties

If myCustomProperty.Name = sCustomPropertyName Then

existCustomProperty = True

Exit For

End If

Next

End Function

'设置文字域的内容

'参数:sTextFieldName:文字域名称,sResult:文字域内容

Sub setResultOfTextField(ByVal sTextFieldName As String, ByVal sResult As String)

If existTextField(sTextFieldName) Then

Word.ActiveDocument.FormFields(sTextFieldName).result = sResult

End If

End Sub

'获取文字域的内容

'参数:sTextFieldName:文字域名称

Function getResultOfTextField(ByVal sTextFieldName As String) As Variant

If existTextField(sTextFieldName) Then

getResultOfTextField = Word.ActiveDocument.FormFields(sTextFieldName).result

Else

getResultOfTextField = ""

End If

End Function

'是否存在该文字域

'参数:sTextFieldName:文字域名称

'返回值:True:存在该文字域,Else:不存在该文字域

Function existTextField(ByVal sTextFieldName As String) As Boolean

Dim myTextField As FormField

existTextField = False

For Each myTextField In Word.ActiveDocument.FormFields

If myTextField.Name = sTextFieldName Then

existTextField = True

Exit For

End If

Next

End Function

'文档最后

Function DocEnd() As Range

Set DocEnd = Word.ActiveDocument.Range(Word.ActiveDocument.Range.End - 1, Word.ActiveDocument.Range.End - 1)

'DocEnd.InsertAfter ("last paragrap")

End Function