Как я могу отобразить сообщение в макросе Word, которое говорит, что нужно подождать некоторое время. Поле должно просто содержать текст «Пожалуйста, подождите немного», и скрипт должен загружаться в фоновом режиме. (Мой сценарий делает это с последовательным письмом, каждый документ сохраняется индивидуально как PDF). Сообщение должно появиться до того, как оно начнет сохраняться и автоматически закрываться после его завершения.
Я работал с MsgBox раньше, но я читал, что он не загружает скрипт в фоновом режиме (только после закрытия MsgBox)
Sub SerienbriefOneDoc()
'
' SerienbriefOneDoc Makro
'
'
Dim Dateiname As String
Dim LetzterRec As Long
Application.ScreenUpdating = False
Application.Visible = False
'Variable declaration
Dim sFolderName As String
Dim sDesktopPath As String, sFolderPath As String
'Find Desktop path location
sDesktopPath = Environ("USERPROFILE") & "\Desktop\"
'Define folder name to create on the desktop
sFolderName = "Serienbrief"
'Folder Path
sFolderPath = sDesktopPath & sFolderName
'Create FSO Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
'Check Specified Folder exists or not
If oFSO.FolderExists(sFolderPath) Then
'If folder is available on the desktop
MsgBox "Der angegebene Ordner existiert bereits auf dem Desktop!", vbInformation, "VBAF1"
GoTo PDFsave
Else
'Create Folder
MkDir sFolderPath
'Diplay messafe on the screen
MsgBox "Ordner erstellt : " & vbCrLf & vbCrLf & sFolderPath, vbInformation, "VBAF1"
End If
PDFsave:
'Const path As String = sFolderPath 'Speicherpfad des Resultates N:\Lehre\Basislehrjahr\Auftraege\Projektarbeit\WordMakro\Serienbrief\save\
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
LetzterRec = Word.ActiveDocument.MailMerge.DataSource.ActiveRecord
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
MsgBox "please wait a moment"
With ActiveDocument.MailMerge 'Waehlt das aktuelle Dokument des Serienbriefs
.DataSource.ActiveRecord = wdFirstRecord
Do
If .DataSource.ActiveRecord > 0 Then 'Prueft ob es mehrere Seiten fuer den Serienbrief gibt
If .DataSource.DataFields("Name").Value <> "0" Then 'zaehlt die Anzahl Datensaetz in der Spalte "Name"
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
If Dir(sFolderPath, vbDirectory) <> "" Then 'prueft ob es das Verzeichnis gibt.
Else
MsgBox "Verzeichnis existiert nicht" 'Fehlermeldung falls das Verzeichniss nicht existiert
End If
With .DataSource
.FirstRecord = .ActiveRecord
.LastRecord = .ActiveRecord
dname = sFolderPath & "\" & .DataFields("Name").Value & "_" & .DataFields("Vorname").Value & ".pdf" 'erstellt eine Variable mit dem Pfad und dem Namen
End With
.Execute Pause:=False
ActiveDocument.SaveAs2 FileName:=dname, FileFormat:=wdFormatPDF 'benennt die Datei und aendert das Dateiformat auf PDF
ActiveDocument.Close False 'schliesst das Fenster
End If
End If
If .DataSource.ActiveRecord < LetzterRec Then 'prueft ob es noch eine Seite gibt im Serienbrief
.DataSource.ActiveRecord = wdNextRecord 'nimmt die naechste Seite des Serienbriefes
Else
Exit Do 'wenn es keine Seite im Serienbrief mehr gibt wird die Schleife beendet
End If
Loop
End With
Application.Visible = True
Application.ScreenUpdating = True[enter image description here][1]
End Sub
https://i.stack.imgur.com/wlznU.png На рисунке показано, как это должно быть (просто без MsgBox)