Как отправить приложение MS Word в фоновый режим, используя VB Script? - PullRequest
0 голосов
/ 18 февраля 2020

Я написал фрагмент кода ниже, используя VBA, который создает пустой документ MS Word с указанным номером. страниц. Функция VB работает просто отлично, но проблема в том, что при запуске она выдает MS Word на переднем плане, несмотря на wordApplication.Visible = False. Так как эту функцию нужно вызывать внутри al oop для N нет. документов, повторное мигание экрана Word становится очень раздражающим для пользователя.

Есть ли решение этой проблемы? Можно ли отправить приложение в фоновый режим, чтобы оно не могло отображаться ни на передней панели, ни на панели задач, и пользователь мог бы go плавно и без отвлекающих факторов работать.

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

Любые указатели были бы действительно полезны.

1 Ответ

0 голосов
/ 20 февраля 2020

Я подозреваю, что проблема вызвана ненужной активацией документа. Попробуйте:

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
...