Vba 如何使用VB脚本将MS Word应用程序发送到后台?

Vba 如何使用VB脚本将MS Word应用程序发送到后台?,vba,vbscript,ms-word,Vba,Vbscript,Ms Word,我已经使用VBA编写了下面的一段代码,它创建了一个具有给定页数的空白MS Word文档。VB函数运行得很好,但问题是当它运行时,它会在前台弹出MS Word,尽管wordApplication.Visible=False。由于该函数需要在循环中调用N个文档,因此Word屏幕的重复闪烁对用户来说非常烦人 这个问题有解决办法吗?可以将应用程序发送到后台,这样它既不会出现在前面,也不会出现在任务栏中,用户可以顺利地进行工作而不会分心 Function CreateEmptyDoc(lngPages,

我已经使用VBA编写了下面的一段代码,它创建了一个具有给定页数的空白MS Word文档。VB函数运行得很好,但问题是当它运行时,它会在前台弹出MS Word,尽管
wordApplication.Visible=False
。由于该函数需要在循环中调用N个文档,因此Word屏幕的重复闪烁对用户来说非常烦人

这个问题有解决办法吗?可以将应用程序发送到后台,这样它既不会出现在前面,也不会出现在任务栏中,用户可以顺利地进行工作而不会分心

Function CreateEmptyDoc(lngPages, strNewFile)

Dim wordApplication
Dim wordDocuments
Dim wordDocument
Dim objPage

Set wordApplication = CreateObject("Word.Application")
wordApplication.Visible = False
Set wordDocuments = wordApplication.Documents
wordApplication.WordBasic.DisableAutoMacros

Set wordDocument = wordDocuments.Add
'Msgbox wordDocument.Name

wordDocument.Activate

For i = 1 To (lngPages - 1) Step +1
   Set objPage = wordDocument.GoTo(1, 1, i)
   objPage.InsertBreak 7
Next

If wordDocument.SaveAs2(strNewFile, 1) = True Then
   CreateEmptyDoc = True
End If

wordDocuments.Close(0)
wordApplication.Quit

Set wordDocument = Nothing
Set wordDocuments = Nothing
Set wordApplication = Nothing

End Function

任何指针都会非常有用。

我怀疑问题是由您不必要地激活文档造成的。尝试:

Function CreateEmptyDoc(lngPages, strNewFile)
Dim wdApp, wdDoc, objPage
Set wdApp = CreateObject("Word.Application")
With wdApp
  .Visible = False
  .WordBasic.DisableAutoMacros
  Set wdDoc = .Documents.Add , , , 0
  With wdDoc 
    For i = 1 To (lngPages - 1) Step +1
     Set objPage = .GoTo(1, 1, i)
     objPage.InsertBreak 7
    Next
    If .SaveAs2(strNewFile, 1) = True Then CreateEmptyDoc = True
    .Close(0)
  End With
  .Quit
End With
Set wdDoc = Nothing: Set wdApp = Nothing
End Function

为什么不将实例化/退出Word应用程序置于循环之外?我相信重复使用
文档。仅添加
不会导致太多的“闪烁”。此函数是从另一个第三方(非基于vb)应用程序调用的,该应用程序在循环中一次处理多个文档(.doc/.docx.pdf等)。因此,它必须创建一个新的VBScript实例来为每个文档调用此函数,一旦控件返回到本机应用程序并显示结果,VBScript变量将不再可用。不仅仅是这段代码,还有其他函数在word文档上执行不同类型的操作。所有人都面临着同样的问题,因此,我建议使用一个库,通过OpenXMLSDK直接处理关闭的文件,而不是自动化Word应用程序。如果没有用户交互,并且您不想“打扰”用户,请不要使用应用程序界面。已尝试,但未激活文档,但无效。删除语句
wordDocument.Activate
没有任何区别。无论如何,谢谢你的回复。@Cindy谢谢你的建议。请分享一些使用OpenXMLSDK和VBScript或Javascript的指针或示例代码。