ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4860|回复: 7

[分享] 在运行使用自动化功能控制 Word 的 Visual Basic 代码时,可能会收到...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-19 16:24 | 显示全部楼层 |阅读模式
在运行使用自动化功能控制 Word 的 Visual Basic 代码时,可能会收到“Run-time error '-2147023174' (800706ba)”(运行时错误“-2147023174”(800706ba))错误消息或“Run-time error '462'”(运行时错误“462”)错误消息

症状
错误消息 1
运行时错误“-2147023174”(800706ba)
自动化错误

错误消息 2
运行时错误“462”: 远程服务器计算机不存在或不可用

原因
由于某行代码调用了 Word 对象、方法或属性但未使用 Word 对象变量对其进行限定,因此 Visual Basic 已设定对 Word 的引用。在结束程序之前,Visual Basic 不会释放此引用。在多次运行该代码时,此错误的引用会妨碍自动化代码的执行。

解决方案:修改该代码,以便对 Word 对象、方法或属性的每次调用都使用相应的对象变量进行限定。

症状:这种现象是设计导致的。

更多的信息
要使 Word 实现自动化,您应设定一个通常引用 Word Application 或 Document 对象的对象变量。然后,可将其他对象变量设置为引用 Word 对象模型中的 Selection、Range 或其他对象。在编写代码以使用 Word 对象、方法或属性时,应总是在调用前使用适当的对象变量。否则,Visual Basic 会使用隐藏的全局变量引用,它已将该变量设置为引用当前运行的实例。如果关闭了 Word 或释放了声明的对象变量,则隐藏的全局变量现在将引用无效(已损坏)对象。再次运行自动化代码时,对此隐藏对象变量的调用将会失败,并出现上述错误。

下列步骤演示重现此问题以及纠正此问题的方法。
-----------------------------------------------
以下步骤演示了重现此问题以及纠正此问题的方法。
重现问题的步骤
1、在 Visual Basic 中启动一个新的标准 EXE 项目。默认情况下会创建 Form1。
2、在“项目”菜单中单击“引用”,然后单击下列任一选项:
对于 Office Word 2007,单击“Microsoft Word 12.0 Object Library”
对于 Word 2003,单击“Microsoft Word 11.0 Object Library”
对于 Word 2002,单击“Microsoft Word 10.0 Object Library”
对于 Word 2000,单击“Microsoft Word 9.0 Object Library”。
对于 Word 97,单击“Microsoft Word 8.0 Object Library”。
3、在 Form1 上放置一个“CommandButton”控件。
4、将以下代码示例复制到 Form1 的代码窗口。
Option Explicit

      Private Sub Command1_Click()
         Dim oWord As Word.Application
         Dim oDoc As Word.Document
         Dim oRange as Word.Range

         Set oWord = CreateObject("Word.Application")
         With oWord
             .Visible = True
             .Activate
             .WindowState = wdWindowStateNormal
         End With

         Set oDoc = oWord.Documents.Add
         MsgBox "Document open", vbMsgBoxSetForeground
         With oDoc
             .PageSetup.LeftMargin = InchesToPoints(1.25)
         End With

         ' This example inserts text at the end of section one.
         Set oRange = ActiveDocument.Sections(1).Range
         With oRange
             .MoveEnd Unit:=wdCharacter, Count:= -1
             .Collapse Direction:=wdCollapseEnd
             .InsertParagraphAfter
             .InsertAfter "End of section."
         End With

         With oDoc
             .Saved = True
         End With

         Set oRange = Nothing
         Set oDoc = Nothing
         oWord.Quit
         Set oWord = Nothing
      End Sub
                                       
5、在“运行”菜单上单击“启动”,或者按 F5 启动程序。
6、单击 CommandButton。没有发生任何错误。但是,现在已经创建了一个对 Word 的引用,而且没有释放该引用。
7、再次单击 CommandButton,注意您会收到如上所述的错误。
注意:出现该错误的原因是,代码引用 InchesToPoints 方法时,未在调用前放置 oWord 对象变量。

8、停止项目并更改以下代码行:
.PageSetup.LeftMargin = InchesToPoints(1.25)
                                       
将该行代码更改为类似于如下代码行:
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)

9、再次运行该程序。然后,单击 CommandButton。没有发生任何错误。        
                                
10、再次单击 CommandButton,注意您会收到错误。
注意:出现该错误的原因是,代码引用 ActiveDocument Section 1 的 Range 对象时,未在调用前放置 oWord 对象变量。

11、停止该项目并将下面的代码行:
Set oRange = ActiveDocument.Sections(1).Range
                                       
更改为
Set oRange = oWord.ActiveDocument.Sections(1).Range
                                       
12、再次运行该程序。注意,您可以多次运行该代码而不会出现错误。
在构建实现 Word 自动化的 Visual Basic 项目时,如果您的项目引用了 Microsoft Word 对象库,则可以从 Word“帮助”文件中获取 Word 对象模型的这些对象、方法和属性的示例代码。当光标移到代码中的某个关键字上时,通过按 F1 键,您将看到任何适用的帮助文本。

TA的精华主题

TA的得分主题

发表于 2010-6-21 12:30 | 显示全部楼层

〖Excel Home友情提示〗

   

很遗憾通知楼上朋友,您的帖子在24小时之内没有任何回复!

通常情况下,本论坛发布的主题帖会在8小时被回复或处理。您的帖子在24小时之内未被回复,其中的原因可能是

1、问题表述不清、模棱两可,难以理解,帮助者被搞晕了,夺帖而出;
2、没有上传必要的附件,或附件被遗忘在某个角落;
3、发帖提问时,语气带棱角、带挑衅,不幸被列入不受欢迎的帖子;
4、所提问题不成立,或提不合理的要求,乐于助人者使出“走为上”之计;
5、话题较偏、较冷或者发布到了不合适的版块,暂时无人问津,顾影自怜。


为了提高您的问题解决效率,我们推荐您阅读以下文章:
* 如何发表新话题和上传附件:http://club.excelhome.net/thread-45649-1-1.html
* 发帖的技巧:http://club.excelhome.net/thread-176339-1-1.html
* EH技术论坛的最佳学习方法:http://club.excelhome.net/thread-117862-1-1.html

TA的精华主题

TA的得分主题

发表于 2010-6-21 12:30 | 显示全部楼层

〖Excel Home友情提示〗

   

很遗憾通知楼上朋友,您的帖子在24小时之内没有任何回复!

通常情况下,本论坛发布的主题帖会在8小时被回复或处理。您的帖子在24小时之内未被回复,其中的原因可能是

1、问题表述不清、模棱两可,难以理解,帮助者被搞晕了,夺帖而出;
2、没有上传必要的附件,或附件被遗忘在某个角落;
3、发帖提问时,语气带棱角、带挑衅,不幸被列入不受欢迎的帖子;
4、所提问题不成立,或提不合理的要求,乐于助人者使出“走为上”之计;
5、话题较偏、较冷或者发布到了不合适的版块,暂时无人问津,顾影自怜。


为了提高您的问题解决效率,我们推荐您阅读以下文章:
* 如何发表新话题和上传附件:http://club.excelhome.net/thread-45649-1-1.html
* 发帖的技巧:http://club.excelhome.net/thread-176339-1-1.html
* EH技术论坛的最佳学习方法:http://club.excelhome.net/thread-117862-1-1.html

TA的精华主题

TA的得分主题

发表于 2010-6-21 12:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

〖Excel Home友情提示〗

   

很遗憾通知楼上朋友,您的帖子在24小时之内没有任何回复!

通常情况下,本论坛发布的主题帖会在8小时被回复或处理。您的帖子在24小时之内未被回复,其中的原因可能是

1、问题表述不清、模棱两可,难以理解,帮助者被搞晕了,夺帖而出;
2、没有上传必要的附件,或附件被遗忘在某个角落;
3、发帖提问时,语气带棱角、带挑衅,不幸被列入不受欢迎的帖子;
4、所提问题不成立,或提不合理的要求,乐于助人者使出“走为上”之计;
5、话题较偏、较冷或者发布到了不合适的版块,暂时无人问津,顾影自怜。


为了提高您的问题解决效率,我们推荐您阅读以下文章:
* 如何发表新话题和上传附件:http://club.excelhome.net/thread-45649-1-1.html
* 发帖的技巧:http://club.excelhome.net/thread-176339-1-1.html
* EH技术论坛的最佳学习方法:http://club.excelhome.net/thread-117862-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-23 22:23 | 显示全部楼层

回复 4楼 Admin 的帖子

版主大人 您可能没有阅读这篇文章,因此领会错误。这篇文章不是一个提问帖,而是一个技术贴,他阐述了一个自动化功能控制 Word 的 Visual Basic 代码时可能会出现的运行时错误一个解决方案!无人问津可能是很多朋友没有看懂。如果你曾经使用vb控制word上述问题将会使你避免一个错误。

TA的精华主题

TA的得分主题

发表于 2015-5-25 21:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常感谢楼主,看了楼主的帖子后,终于把“ 远程服务器计算机不存在或不可用”这个错误给解决了。

TA的精华主题

TA的得分主题

发表于 2015-8-6 10:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-9-3 12:07 | 显示全部楼层
Hello,我在用VBA操作IE时,运行到以下代码,会出现“”远程服务器不存在或者不可用“”提示bug,有解决方法?
IE.Document.GetElementbyid("mdm_target").Click
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 10:27 , Processed in 0.023680 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表