打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB 操作WORD函数实例

VB  操作WORD函数实例

    说明,用VB操作WORD,以下源码第一次操作完全正常,正常打开,正常替换,正常退出。进程中并没有留下windword的进程,但第二次继续操作时就出问题,运行到ReplaceWord()就出现462错误,关闭程序重新开始又正常。
'=============打开word==============
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Function OpenWord(FileName) '打开指定word文档
     Set wordApp =New Word.Application
    Set wordDoc = wordApp.Documents.Open(FileName)
    wordApp.Visible = False
    Set wordDoc = wordApp.Documents.Open(FileName)
End Function

‘============替换关键字===========
Function ReplaceWord(SearchStr, ReplaceStr) '全部替换函数
    wordApp.Selection.Find.ClearFormatting
    wordApp.Selection.Find.Replacement.ClearFormatting
    With wordApp.Selection.Find
        .Text = SearchStr
        .Replacement.Text = ReplaceStr
        .Forward = True
        .Wrap = wdFindContinue
       .Format = False
       .MatchCase = False
       .MatchWholeWord = False
       .MatchByte = True
       .MatchWildcards = False
       .MatchSoundsLike = False
       .MatchAllWordForms = False
    End With
    wordApp.Selection.Find.Execute Replace:=wdReplaceAll
End Function

'==================另存为===================

Function SaveAsWord(DiskStr, NameStr)
      ChangeFileOpenDirectory DiskStr
      ActiveDocument.SaveAs FileName:=NameStr, FileFormat:=wdFormatDocument , LockComments:=False, _
            Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False,_
            EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False,_
            SaveAsAOCELetter:= False
      Application.Documents.Close
      Application.Quit
End Function

'===================清除对象============
Function CloseWord()
      Set wordDoc = Nothing '清除文件实例
      Set wordApp = Nothing '清除WORD实例
End Function

使用 Nothing 关键字将对象变量从实际对象中分离开来,但这并不意味着实际对象的消失。举一个例子 ,新建两个窗体,在 Form1 上放一个按钮,再在其 Click 事件中写入:
Form2.Show
'在这里,VB 默认创建了一个 Form2 的实例,就像调用了
'Set Form2 = New Form2
Set Form2 = Nothing

运行后,点击 Form1 上的按钮,你会看到,Form2 好端端的在那里摆着,并没有消失,但是,如果你再点一次,会发现,又出现了一个 Form2
原因是,VB 会自动创建 Form2 的实例,而由于调用了 Set Form2 = Nothing, 所以下次调用时,VB 会自动创建一个 Form2 的实例,以前那个打开的 Form2 是无法在其他模块中调用的.

再回到你的代码,同理,
Set wordDoc = Nothing '清除文件实例
Set wordApp = Nothing '清除WORD实例
并没有关闭 Word,你可以把
wordApp.Visible = False
改成wordApp.Visible = True
再试试你的代码,会发现,调用OpenWord后,出现了一个Word窗口
调用CloseWord后,Word 并未发生变化
但是,如果此时你调用SaveAsWord或ReplaceWord,会发生错误, 原因是 WordDoc 与 WordApp 现在已经没有指向已经打开的那个 Word 文档 与 Word 程序.

但是,如果此时你再调用 OpenWord,你就可以看到为什么调用SaveAsWord或ReplaceWord,会发生错误,此时是因为文档已经被打开了,为了关闭 Word,你可以使用下面的代码:
wordDoc.Close '关闭 Word 文档
wordApp.Quit '退出 Word

但由于你的 WordApp 是隐藏的,所以最好使用下面的代码
wordDoc.Close True '关闭 Word 文档并保存更改
wordApp.Quit '退出 Word

如果你在 Word 程序 中同时打开数个 Word 文档,那么可以使用
wordApp.Quit True '退出 Word 并保存所有打开文档的更改

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# VS2012操作word文档 (一).创建文档
(转)C# Office操作
【干货】Excel操作Word导出图片
Delphi操作word的基本用法
使用ole控制word
html在线显示word怎么在html中显示word
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服