Vba 如何使用VB脚本将MS Word应用程序发送到后台?
我已经使用VBA编写了下面的一段代码,它创建了一个具有给定页数的空白MS Word文档。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,
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的指针或示例代码。