wordVBA运行时错误‘4198‘:应用程序定义或对象定义错误 解决方法

项目场景:

Word VBA


问题描述:

最近在学习wordVBA时遇到以下问题:运行时错误'4198':应用程序定义或对象定义错误

这是我写的一段Excel VBA操作Word的代码,作用是打开已存在的word文档,向其中输入内容后保存退出

Sub test2()
Dim wordapp As New Word.Application '建立word对象
wordapp.Documents.Open ("D:\2021\我的文件\VBA\练习\test.docx") '打开word文档
wordapp.Visible = ture
wordap.Selection.EndKey unit:=wdStory '光标移动到文章末尾
wordapp.Selection.TypeText Text:="我的博客" '输入内容"
wordapp.ActiveDocument.Save '保存
wordapp.ActiveDocument.Close '关闭
wordapp.Quit '退出word对象
Set wordapp = Nothing '释放对象
End Sub

该代码中有一句错误,第五句我把对象变量wordapp误写成了wordap,第一次运行时出现如下问题:运行时错误‘424’:要求对象

第二次运行时再次出现问题,运行过程缓慢,按住win+tab键后发现这个窗口:

***.docx 被“***”锁定,无法编辑。请选择:打开只读副本;创建本地副本,稍后合并更改;在原始副本可用时接收通知

点击取消后报错:运行时错误'4198':应用程序定义或对象定义错误

 使用WPS打开word文档时,发现:文档已被“***”锁定,是否以只读模式打开?


 

 

原因分析:

猜想如下:

在第一次运行时,程序可以正常打开word文档,但在执行到第五句错误语句时,程序自动退出运行,没有继续往下执行,因此该文件没有被保存,但是被word锁定成了只读模式保护起来。

第二次运行时,因为程序不能正常打开该文档,所以会出现“文件正在使用”的弹窗提示,而且该文档有些时候没有办法编辑、保存以及删除,只有在任务管理器中结束word后台运行才能删除掉。


解决方案:

为了防止调试程序过程中再出现以上问题,可以在程序中加入一个错误转移语句

程序中出现错误后会自动转到skip后面的语句运行,以上问题得到完美解决。

Sub test2()
Dim wordapp As New Word.Application '建立word对象
On Error GoTo skip
wordapp.Documents.Open ("D:\2021\我的文件\VBA\练习\test.docx") '打开word文档
wordapp.Visible = ture
wordap.Selection.EndKey unit:=wdStory '光标移动到文章末尾
wordapp.Selection.TypeText Text:="我的博客" '输入内容"
skip:
wordapp.ActiveDocument.Save '保存
wordapp.ActiveDocument.Close '关闭
wordapp.Quit '退出word对象
Set wordapp = Nothing '释放对象
End Sub

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值