Word VBA Application.Quit问题

时间:2016-10-04 17:57:04

标签: vba ms-word

If (Documents.count = 1) And (ActiveDocument.Name = ThisDocument.Name) Then
    Application.DisplayAlerts = False
    Application.Quit (wdDoNotSaveChanges)
Else
    Application.DisplayAlerts = False
    ActiveDocument.Close (wdDoNotSaveChanges)
End If

我遇到上述代码的问题,因为当代码清除第一个If语句(意味着它是唯一的文档打开且文档名称是预期的)时,它仍然赢得了#39;完全关闭Word应用程序。它只会关闭文档,然后留下空白" Word窗口打开。

我知道它正在清除第一个If语句,因为我写了一个快速检查调试文件的每个元素,并且所有内容都按预期显示。另外,如果我单步执行代码,它确实会按原样移动。

有趣/令人沮丧的是,如果我在调试模式中逐步执行代码并进入Application.Quit代码中的部分,它确实会退出整个程序!所以我真的不确定为什么在我运行代码而不是单步执行代码时它不起作用。

尝试过:

1 - 添加'退出子' Application.Quit之后的行

2 - 明确地将Word应用程序设置为对象:

Dim wObj  As Object
Set wObj = CreateObject("word.Application")
'Application.Quit (wdDoNotSaveChanges) '
wObj.Quit (wdDoNotSaveChanges)
Set wObj = Nothing

3 - 添加前关闭事件:

Sub DocumentBeforeClose()
ActiveDocument.Saved = True
End Sub

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

在Excel中遇到此问题时,我发现必须打电话给const [username, password] = Buffer.from("YOUR_API_KEY", "base64").toString().split(":"); axios.get('https://apipath.com/path?verbose=true', {}, { auth: { username, password } }) .then(function(response) { console.log(response.data, 'api response'); }) 后告诉Excel关闭所有文档。

  • 因为在工作簿窗口关闭后Excel可以保留对任何工作簿的引用(工作簿仍存在于VBA编辑器中,未发布的对象引用)…
  • 因为我不能总是知道我的文档是此Excel实例打开的第一个文档...
  • 因为我必须接受一个Excel加载项,该加载项会导致工作簿在保存后立即显示为已修改(由于更改了不可见的工作簿属性)……
  • 因为我的用例要求Excel退出...

适用于Microsoft Word:

Application.Quit

答案 1 :(得分:0)

我在Application.Quit中遇到了类似的问题(从Excel宏中退出Word)。原来,这与Application.ScreenUpdating的状态有关。 在Excel ScreenUpdating中将宏挂起时设置为false,但正确继续执行以下操作:

Application.ScreenUpdating = True