【精品文献】vb操作word.doc

上传人:文库蛋蛋多 文档编号:2389386 上传时间:2023-02-17 格式:DOC 页数:25 大小:53KB
返回 下载 相关 举报
【精品文献】vb操作word.doc_第1页
第1页 / 共25页
【精品文献】vb操作word.doc_第2页
第2页 / 共25页
【精品文献】vb操作word.doc_第3页
第3页 / 共25页
【精品文献】vb操作word.doc_第4页
第4页 / 共25页
【精品文献】vb操作word.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《【精品文献】vb操作word.doc》由会员分享,可在线阅读,更多相关《【精品文献】vb操作word.doc(25页珍藏版)》请在三一办公上搜索。

1、追加500分求教 VB操作WORD问题悬赏分:200 - 解决时间:2007-7-28 11:42说明,用VB操作WORD,以下源码第一次操作完全正常,正常打开,正常替换,正常退出。进程中并没有留下windword的进程,但第二次继续操作时就出问题,运行到ReplaceWord()就出现462错误,关闭程序重新开始又正常。请指教出错及解决原因,追加到500分 =打开word= Function OpenWord(FileName) 打开指定word文档 Dim wordApp As New Word.Application Dim wordDoc As New Word.Document Se

2、t wordApp = CreateObject(Word.Application) wordApp.Visible = False Set wordDoc = wordApp.Documents.Open(FileName) End Function =替换关键字= Function ReplaceWord(SearchStr, ReplaceStr) 全部替换函数 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = SearchStr .R

3、eplacement.Text = ReplaceStr .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Function =另存为= Functi

4、on SaveAsWord(DiskStr, NameStr) ChangeFileOpenDirectory DiskStr ActiveDocument.SaveAs FileName:=NameStr, FileFormat:=wdFormatDocument _ , LockComments:=False, Password:=, AddToRecentFiles:=True, _ WritePassword:=, ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=Fals

5、e, SaveFormsData:=False, SaveAsAOCELetter:= _ False Application.Documents.Close Application.Quit End Function =清除对象= Function CloseWord() Set wordDoc = Nothing 清除文件实例 Set wordApp = Nothing 清除WORD实例 End Function问题补充:根据小fisher的答案,已经解决问题,另外在SaveAsWord过程中,ChangeFileOPenDirectory DiskStr更改为ChangeFileOpen

6、Directory DiskStr ,ActiveDocument.SaveAs更改为wordDoc.SaveAs,再加上原先小fisher提到要更改的地方,已经完美解决,谢谢! PS:由于百度只能2次提高悬赏,每次50分,所以现在只有200分,未能对现500分的诺言,所以只有另开贴来加送300分!提问者: 有野问 - 经理 五级 最佳答案1) Function ReplaceWord(SearchStr, ReplaceStr) 全部替换函数 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting W

7、ith Selection.Find . 这个函数过程有错误!因为Selection是word的对象而不是VB的对象,所以不能在VB中直接引用,必须用wordApp.Selection替换掉Selection才行! 这段代码在word VBA中调试不会出问题,但移植到VB中时要注意。 2)wordApp和wordDoc必须定义为全局变量,在模块公有部分使用 Dim wordApp As Word.Application Dim wordDoc As Word.Document 来定义 然后在OpenWord(FileName)过程中使用Set wordApp =New Word.Applica

8、tion 和Set wordDoc = wordApp.Documents.Open(FileName),否则在CloseWord()过程中wordApp和wordDoc两个变量将会是未初始化的Variant类型。 3)Function SaveAsWord(DiskStr, NameStr)中的Application须使用wordApp替换,道理同1)。_-网上说 在Visual Basic中创建Word文档使用语句 Dim newDoc As Word.Document Set newDoc = new Word.Document 但是VB会提示上述语句 “用户定义类型未定义” 另一种创建

9、的方法是 Dim MsWord As Object Set MsWord = CreateObject(Word.Basic) MsWord.AppShow MsWord.FileNewDefault 可以创建 但是下述语句没办法使用(即对该文档的一些操作) With MsWord .Content.Font.Name = 宋体 .Content.Font.Size = 12 .Content.Paragraphs.LineSpacing = 15.5 End With 请教各位高手指点,我想在vb中创建一个word文档,并将程序计算的一堆结果,在该文档中按一定的格式打印出来。 另,我在wor

10、d中录制了一段宏,请问在VB中如何调用,要求代码 Sub zz() ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=6, NumColumns:= _ 6, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ wdAutoFitFixed With Selection.Tables(1) If .Style 网格型 Then .Style = 网格型 End If .ApplyStyleHeadingRows = True .ApplyStyleLa

11、stRow = True .ApplyStyleFirstColumn = True .ApplyStyleLastColumn = True End With Selection.TypeText Text:=1 Selection.MoveRight Unit:=wdCell Selection.TypeText Text:=2 Selection.MoveRight Unit:=wdCell Selection.TypeText Text:=3 Selection.MoveRight Unit:=wdCell Selection.TypeText Text:=4 Selection.Mo

12、veRight Unit:=wdCell Selection.TypeText Text:=5 End sub提问者: zhaizhaiya - 助理 三级 最佳答案将 With MsWord .Content.Font.Name = 宋体 .Content.Font.Size = 12 .Content.Paragraphs.LineSpacing = 15.5 End With 改写为 MsWord.Content.Font.Name = 宋体 MsWord.Content.Font.Size = 12 MsWord.Content.Paragraphs.LineSpacing = 15.

13、5 就可以了。 _-用vb读word时,在程序读完,为什么还有关联,怎样给她关联除啦悬赏分:0 - 解决时间:2008-10-23 10:06用vb实现读word程序的操作! 也就是说当我运行vb程序时读啦一次word 第二次再执行时还是第一次的结果! 例如执行下面这个语句时: If NewDoc.Paragraphs(1).Range.Font.Name = 新 宋 体 Then s = s + 0.5 x = MsgBox(s= + Str$(s), 64, 字体为1.5) 执行第一次之后,再改程序,执行时,总是提示word在另一个地方已经打开,实际上没有打开,我想这是由于关联的问题!提问

14、者: lcs6678 - 助理 二级 最佳答案在任务管理器下的进程下看看,肯定打开了。 不知道你是用什么方法定义的word对象。 如果这样定义: Dim a As Object, b As Object, c As Object Set a = CreateObject(word.application) Set b = a.Documents.open(c:1 .doc) 用以下语句关闭 b.close a.quit _在VB如何存取word格式的文件悬赏分:30 - 解决时间:2006-9-12 08:30我想把用vb计算的一堆结果打印在word里面,并且有固定格式的简单排版,最好能在wo

15、rd中打印一些表格,请问用什么样的函数或者对象实践?希望高手帮忙,要是能加一点说明,更加感激不尽提问者: zhaizhaiya - 助理 二级 最佳答案我帮你搜索到了两种方法 虽然我自己也不懂 但是也许你会懂吧 通过VBA进行WORD调用,要替换WORD中固定位置的值,可以事先在文档中定义标签,然后修改标签的内容即可,不用查找。 VB中用VBA调用WORD的方法: 菜单-工程-引用-Microsoft Word 9.0 Object Library (后面的数字为版本号) Dim wdApp As New Word.Application Dim docApp As New Word.Docu

16、ment 具体用怎么用标签替换,可以到WORD中录制宏看看就知道了,宏可以直接在VB中通过VBA执行。 方法2 使用VB编程时,有时需要调用Microsoft Word对文字进行编辑、排版及输出。为实现这种调用,可以使用Shell函数、OLE自动化、在包容器中嵌入Word对象等方法。经过试用和比较,总结出了这几种方法的各自特点。 1 使用Shell函数直接调用 语法:Shell (pathname,windowstyle).Pathname是指要执行的程序的名字和任何必须的参数或命令行开关,可以包括目录和驱动器名;Windowstyle是执行程序的窗口风格的数字。 使用Shell调用Word比

17、较简单,编程量小,但必须明确指定Word所在路径,这不利于移植,而且,不能对Word进行控制,不利于程序和Word之间的数据交换。 2 使用OLE自动化控制Microsoft Word 2.1 使用方法 (1)Word为OLE自动化提供一种称为“Basic”的对象,要在VB中控制Word ,首先要定义一个引用Word中“Basic”对象的对象变量:Dim Wordobj as Object (2)将Word 中的“Basic”对象赋给该对象:Set Wordobj=CreateObject(Word.Basic) (3)可以使用大多数WordBasic语句和函数控制Word或Word文档,使用

18、方法和在Word宏中使用WordBasic指令的方法基本相同。 (4)关闭Word:Set Wordobj =Nothing。 注意:“Basic”对象不支持关闭它自己的一个方法。即若在OLE自动化中关闭了Word,则对象被置为Nothing,便不能再对对象进行操作,程序出错。 2.2 VB指令与WordBasic指令的差异 (1)有一些语句和函数不能使用,包括:控制结构,如WhileWend和IfThenElse;声明语句,如Dim;定制对话框相关的语句:FileExit语句;要求数组变量作为参数的语句或函数。 (2)也有一些指令使用方法不同。返回字符串以一个美元符($)结束的WordBas

19、ic函数的关键字必须括在方括号中。例如,在WordBasic宏中的GetBookmark$()语句:mark$=GetBookmark$(Address),若用VB调用,必须这样写mark$=Wordobj.Ge-tBookmark$(Address)。选择一个命令按钮用“True”,不选择用“False” 2.3 对OLE自动化的说明 Word可以为OLE自动化给另一个应用提供对象,但是它不能使用OLE自动化访问其它应用中的对象。例如:VB和Excel可以使用OLE自动化访问Word,但是Word不能使用OLE自动化访问它们。 3 在包容器中嵌入Word对象 在VB中,要访问在包容器中嵌入的

20、Word对象,首先要在项目中插入对象。做法如下:在窗体中插入OLE控件,对象类型选择“MicrosoftWord图片”或“Microsoft Word文档”,再按“确定”。 然后用Object属性访问文档或图片,并使用WordBasic语句和函数作用于它。嵌入的对象必须在可被访问之前被激活,可以使用Action属性激活OLE控件。例如,使用下面指令访问一个嵌入在称为OLE1的OLE控件中的文档: Dim Wordobj as Object OLE1.Action =7 Set Wordobj =OLE1.Object.Application. WordBasic 其他方面,使用方法同OLE自动

21、化。使用在包容器中嵌入的Word对象,Word显示的窗口大小、位置与OLE控件定义的大小、位置相同,而且工具栏显示位置与Word脱离。这一点与OLE自动化相比,是个不足。 总之,要想在Microsoft Visual Basic中控制Microsoft Word,最好使用OLE自动化,通过使用WordBasic指令对Word进行全面控制,而且,用户使用起来与使用Microsoft Word一样,非常方便 _用VB如何在WORD指定位置上插入文字?悬赏分:150 - 解决时间:2006-12-6 10:21提问者: sxtyhjh - 见习魔法师 二级 最佳答案在VB6.0中,操作word,使用

22、它强大的查找、替换、删除、复制、翦切功能。还可以把特定字符替换成图片。有了它你就可以使用数据库中的内容或图片文件替换word文件中的特定字符。 只要把下列内容复制到写字板中,另存为SetWord.cls文件,然后在把它添加到工程中,就可以使用了。 VERSION 1.0 CLASS BEGIN MultiUse = -1 True Persistable = 0 NotPersistable DataBindingBehavior = 0 vbNone DataSourceBehavior = 0 vbNone MTSTransactionMode = 0 NotAnMTSObject END

23、 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_Pi

24、cFile As String Private C_ErrMsg As Integer Public Event HaveError() Attribute HaveError.VB_Description = 出错时激发此事件.出错代码为ErrMsg属性 * ErrMsg代码:1word没有安装 2 - 缺少参数 3 - 没权限写文件 4 - 文件不存在 * Public Function ReplacePic(FindStr As String, Optional Time As Integer = 0) As Integer Attribute ReplacePic.VB_Descrip

25、tion = 查找FindStr,并替换为PicFile所指向的图片文件,替换次数由time参数确定,为0时,替换所有 * 从Word.Range对象mysel中查找所有FindStr,并替换为PicFile图像 替换次数由time参数确定,为0时,替换所有 * If Len(C_PicFile) = 0 Then C_ErrMsg = 2 Exit Function End If Dim i As Integer Dim findtxt As Boolean mysel.Find.ClearFormatting mysel.Find.Replacement.ClearFormatting W

26、ith 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

27、.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 Function Public

28、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

29、 = 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 Function Public Function ReplaceChar(FindStr

30、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 Boolean If Len(FindStr) = 0 Then C_ErrMsg = 2 RaiseEvent HaveErro

31、r Exit Function End If mysel.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 .MatchSounds

32、Like = False .MatchAllWordForms = False End With If 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 Replac

33、e:=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 Next If Len(FileName) = 0 Then C_ErrMsg = 2 RaiseEvent HaveError Exit Function En

34、d If Open FileName For Binary As #1 If Err.Number 0 Then C_ErrMsg = 3 Exit Function End If 二进制文件用Get,Put存放,读取数据 Put #1, , PicData Close #1 C_PicFile = FileName GetPic = True End Function Public Sub DeleteToEnd() Attribute DeleteToEnd.VB_Description = 删除从当前位置到结尾的所有内容 mysel.EndKey Unit:=wdStory, Exten

35、d:=wdExtend mysel.Delete Unit:=wdCharacter, Count:=1 End Sub Public Sub MoveEnd() Attribute MoveEnd.VB_Description = 光标移动到文档结尾 光标移动到文档结尾 mysel.EndKey Unit:=wdStory End Sub Public Sub GotoLine(LineTime As Integer) mysel.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=LineTime, Name:= End Sub Public

36、 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 If If Err.Number 0 Then C_ErrMsg = 4 RaiseEvent HaveError Ex

37、it Sub End If mywdapp.Visible = view mywdapp.Activate Set mysel = mywdapp.Application.Selection mysel.Select End Sub Public 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 En

38、d If End Sub Public Sub ViewDoc() Attribute ViewDoc.VB_Description = 显示Word程序界面 mywdapp.Visible = True End Sub Public Sub AddNewPage() Attribute AddNewPage.VB_Description = 插入分页符 mysel.InsertBreak Type:=wdPageBreak End Sub Public Sub WordCut() Attribute WordCut.VB_Description = 剪切模板所有内容到剪切板 保存模板页面内容

39、 mysel.WholeStory mysel.Cut mysel.HomeKey Unit:=wdStory End Sub Public Sub WordCopy() Attribute WordCopy.VB_Description = 拷贝模板所有内容到剪切板 mysel.WholeStory mysel.Copy mysel.HomeKey Unit:=wdStory End Sub Public Sub WordDel() mysel.WholeStory mysel.Delete mysel.HomeKey Unit:=wdStory End Sub Public Sub Wor

40、dPaste() Attribute WordPaste.VB_Description = 拷贝剪切板内容到当前位置 插入模块内容 mysel.Paste End Sub Public Sub CloseDoc() Attribute CloseDoc.VB_Description = 关闭Word文件模板 * 关闭Word文件模本 * On Error Resume Next mywdapp.ActiveDocument.Close False If Err.Number 0 Then C_ErrMsg = 3 Exit Sub End If End Sub Public Sub QuitW

41、ord() * 关闭Word程序 * On Error Resume Next mywdapp.Quit If Err.Number 0 Then C_ErrMsg = 3 Exit Sub End If End Sub Public 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 If

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号