怎么样使用vb控制word的类模块?
在VB6.0中,操作word,使用它强大的查找、替换、删除、复制、翦切功能。还可以把特定字符替换成图片。有了它你就可以使用数据库中的内容或图片文件替换word文件中的特定字符。
只要把下列内容复制到写字板中,另存为SetWord.cls文件,然后在把它添加到工程中,就可以使用了。
VERSION 1.0 CLASS
BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "SetWord" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Private mywdapp As Word.Application Private mysel As Object'属性值的模块变量
Private C_TemplateDoc As String Private C_newDoc As String Private C_PicFile As String Private C_ErrMsg As IntegerPublic Event HaveError()
Attribute HaveError.VB_Description = "出错时激发此事件.出错代码为ErrMsg属性" '*************************************************************** 'ErrMsg代码:1-word没有安装2-缺少参数 3-没权限写文件 ' 4-文件不存在 ' '***************************************************************Public Function ReplacePic(FindStr As String, Optional Time As Integer = 0) As Integer
Attribute ReplacePic.VB_Description = "查找FindStr,并替换为PicFile所指向的图片文件,替换次数由time参数确定,为0时,替换所有"'********************************************************************************
'从Word.Range对象mysel中查找所有FindStr,并替换为PicFile图像 ' 替换次数由time参数确定,为0时,替换所有 '********************************************************************************If Len(C_PicFile) = 0 Then
C_ErrMsg = 2 Exit Function End IfDim i As Integer
Dim findtxt As Booleanmysel.Find.ClearFormatting
mysel.Find.Replacement.ClearFormatting With mysel.Find .Text = FindStr .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With mysel.HomeKey Unit:=wdStory findtxt = mysel.Find.Execute(Replace:=True) If Not findtxt Then ReplacePic = 0 Exit Function End If i = 1 Do While findtxt mysel.InlineShapes.AddPicture FileName:=C_PicFile If i = Time Then Exit Do i = i + 1 mysel.HomeKey Unit:=wdStory findtxt = mysel.Find.Execute(Replace:=True) Loop ReplacePic = i End FunctionPublic Function FindThis(FindStr As String) As Boolean
Attribute FindThis.VB_Description = "查找FindStr,如果模板中有FindStr则返回True" If Len(FindStr) = 0 Then C_ErrMsg = 2 Exit Function End If mysel.Find.ClearFormatting mysel.Find.Replacement.ClearFormatting With mysel.Find .Text = FindStr .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With mysel.HomeKey Unit:=wdStory FindThis = mysel.Find.Execute End FunctionPublic Function ReplaceChar(FindStr As String, RepStr As String, Optional Time As Integer = 0) As Integer
Attribute ReplaceChar.VB_Description = "查找FindStr,并替换为RepStr,替换次数由time参数确定,为0时,替换所有" '******************************************************************************** '从Word.Range对象mysel中查找FindStr,并替换为RepStr ' 替换次数由time参数确定,为0时,替换所有 '******************************************************************************** Dim findtxt As BooleanIf Len(FindStr) = 0 Then
C_ErrMsg = 2 RaiseEvent HaveError Exit Function End Ifmysel.Find.ClearFormatting
mysel.Find.Replacement.ClearFormatting With mysel.Find .Text = FindStr .Replacement.Text = RepStr .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End WithIf Time > 0 Then
For i = 1 To Time mysel.HomeKey Unit:=wdStory findtxt = mysel.Find.Execute(Replace:=wdReplaceOne) If Not findtxt Then Exit For Next If i = 1 And Not findtxt Then ReplaceChar = 0 Else ReplaceChar = i End If Else mysel.Find.Execute Replace:=wdReplaceAll End If End Function
Public Function GetPic(PicData() As Byte, FileName As String) As Boolean
Attribute GetPic.VB_Description = "把图像数据PicData,存为PicFile指定的文件" '******************************************************************************** '把图像数据PicData,存为PicFile指定的文件 '******************************************************************************** On Error Resume NextIf Len(FileName) = 0 Then
C_ErrMsg = 2 RaiseEvent HaveError Exit Function End IfOpen FileName For Binary As #1
If Err.Number <> 0 Then
C_ErrMsg = 3 Exit Function End If'二进制文件用Get,Put存放,读取数据
Put #1, , PicData Close #1C_PicFile = FileName
GetPic = TrueEnd Function
Public Sub DeleteToEnd() Attribute DeleteToEnd.VB_Description = "删除从当前位置到结尾的所有内容" mysel.EndKey Unit:=wdStory, Extend:=wdExtend mysel.Delete Unit:=wdCharacter, Count:=1 End Sub
Public Sub MoveEnd()
Attribute MoveEnd.VB_Description = "光标移动到文档结尾" '光标移动到文档结尾 mysel.EndKey Unit:=wdStory End SubPublic Sub GotoLine(LineTime As Integer)
mysel.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=LineTime, Name:="" End SubPublic Sub OpenDoc(view As Boolean)
Attribute OpenDoc.VB_Description = "打开Word文件,View确定是否显示Word界面" On Error Resume Next'********************************************************************************
'打开Word文件,并给全局变量mysel赋值 '********************************************************************************If Len(C_TemplateDoc) = 0 Then
mywdapp.Documents.Add Else mywdapp.Documents.Open (C_TemplateDoc) End IfIf Err.Number <> 0 Then
C_ErrMsg = 4 RaiseEvent HaveError Exit Sub End If mywdapp.Visible = view mywdapp.Activate Set mysel = mywdapp.Application.Selection 'mysel.Select End SubPublic Sub OpenWord()
On Error Resume Next'********************************************************************************
'打开Word程序,并给全局变量mywdapp赋值 '********************************************************************************Set mywdapp = CreateObject("word.application")
If Err.Number <> 0 Then C_ErrMsg = 1 RaiseEvent HaveError Exit Sub End If End SubPublic Sub ViewDoc()
Attribute ViewDoc.VB_Description = "显示Word程序界面" mywdapp.Visible = True End SubPublic Sub AddNewPage()
Attribute AddNewPage.VB_Description = "插入分页符" mysel.InsertBreak Type:=wdPageBreak End SubPublic Sub WordCut()
Attribute WordCut.VB_Description = "剪切模板所有内容到剪切板" '保存模板页面内容 mysel.WholeStory mysel.Cut mysel.HomeKey Unit:=wdStory End SubPublic Sub WordCopy()
Attribute WordCopy.VB_Description = "拷贝模板所有内容到剪切板" mysel.WholeStory mysel.Copy mysel.HomeKey Unit:=wdStory End SubPublic Sub WordDel()
mysel.WholeStory mysel.Delete mysel.HomeKey Unit:=wdStory End SubPublic Sub WordPaste()
Attribute WordPaste.VB_Description = "拷贝剪切板内容到当前位置" '插入模块内容 mysel.Paste End SubPublic Sub CloseDoc()
Attribute CloseDoc.VB_Description = "关闭Word文件模板" '******************************************************************************** '关闭Word文件模本 '******************************************************************************** On Error Resume Nextmywdapp.ActiveDocument.Close False
If Err.Number <> 0 Then
C_ErrMsg = 3 Exit Sub End IfEnd Sub
Public Sub QuitWord()
'******************************************************************************** '关闭Word程序 '******************************************************************************** On Error Resume Nextmywdapp.Quit
If Err.Number <> 0 Then C_ErrMsg = 3 Exit Sub End If End SubPublic Sub SavetoDoc()
Attribute SavetoDoc.VB_Description = "保存当前文档为FileName指定文件" On Error Resume Next'并另存为文件FileName
If Len(C_newDoc) = 0 Then
C_ErrMsg = 2 RaiseEvent HaveError Exit Sub End Ifmywdapp.ActiveDocument.SaveAs (C_newDoc)
If Err.Number <> 0 Then C_ErrMsg = 3 RaiseEvent HaveError Exit Sub End IfEnd Sub
Public Property Get TemplateDoc() As String Attribute TemplateDoc.VB_Description = "模板文件名." TemplateDoc = C_TemplateDoc End Property
Public Property Let TemplateDoc(ByVal vNewValue As String)
C_TemplateDoc = vNewValue End PropertyPublic Property Get newdoc() As String
Attribute newdoc.VB_Description = "执行CloseDoc方法时,将模板文件另存为此文件名指定的新文件.如果不指定,在执行CloseDoc方法时,将产生一个错误" newdoc = C_newDoc End PropertyPublic Property Let newdoc(ByVal vNewValue As String)
C_newDoc = vNewValue End PropertyPublic Property Get PicFile() As String
Attribute PicFile.VB_Description = "图像文件名" PicFile = C_PicFile End PropertyPublic Property Let PicFile(ByVal vNewValue As String)
C_PicFile = vNewValue End PropertyPublic Property Get ErrMsg() As Integer
Attribute ErrMsg.VB_Description = "错误信息.ErrMsg代码: 1-word没有安装 2-缺少参数 3-没权限写文件 4-文件不存在" ErrMsg = C_ErrMsg End Property