Remote Server Computer nicht verügbar
03.08.2021 07:16:52
Raptor
ich erstelle mit einer Excel Datei Verträge. Ich habe in Excel eine UserForm, in welche ich Daten eingebe. Diese Daten werden dann über Verknüpfungen in meine Word Dokumente eingefügt und als PDF gespeichert. Beim 1.Versuch alles gut. aber beim 2. Versuch bringt er mir dann die Fehlermeldung: Laufzeitfehler 462 "Der Remote Server Computer ist nicht verfügbar oder existiert nicht.. Ich habe auch im Task Manager gesehen, dass Word noch im Hintergrund geöffnet ist allerdings weiß ich nicht wie ich es per Code schließe.
Gruß
Sub Button_Weiter_Click()
'Word Prozesse beenden, um fehler zu vermeiden.
'Vorgaben definieren
Dim objWindowsService As Object
Set objWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\.rootcimv2")
'Abfrage der aktiven Prozesse
Dim ProcessList As Object
Set ProcessList = objWindowsService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'winword.exe'")
'Selektierte Prozessliste durchlaufen
Dim objProcess As Object
For Each objProcess In ProcessList
objProcess.Terminate 'Prozess beenden
Next objProcess
'Deklarationen
Dim Word As Object
Dim Doc1 As Object
Dim Ziel1 As String
Dim D1 As String
'Pfade angeben
D1 = Worksheets("Quellpfade").Range("B5").Value
Ziel1 = Worksheets("Speicherpfade").Range("C5").Value
Ladebalken.Show vbModeless
'Variablen zum öffnen der Dokumente erstellt.
Set Word = CreateObject("Word.Application")
Word.Visible = False
Word.DisplayAlerts = 0
Word.ScreenUpdating = False
Word.Options.SaveNormalPrompt = False
Word.Options.SavePropertiesPrompt = False
Set Doc1 = Word.Documents.Open(D1)
On Error GoTo Weiter
Dim x As Integer
Dim y As Integer
Dim a As Integer
Dim b As Integer
x = 198.25
y = Worksheets("Stammdaten").Range("D18").Value
b = x / y
'Dokumente öffnen, automatisch aktualisieren und speichern.
Doc1.SaveAs Ziel1
Doc1.Close
Set Doc1 = Nothing
Set Word = Nothing
DoEvents
Ladebalken.Label.Width = 3
Ladebalken.Caption = "Dokumente werden erstellt... 1/18"
Weiter:
'Word Prozesse beenden, da sonst der Arbeitsspeicher zu voll wird.
Set objWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\.rootcimv2")
'Abfrage der aktiven Prozesse
Set ProcessList = objWindowsService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'winword.exe'")
'Selektierte Prozessliste durchlaufen
For Each objProcess In ProcessList
objProcess.Terminate 'Prozess beenden
Next objProcess
'Word Objekt schließen.
Set Word = Nothing
'Dokument1 als PDF mit Namen des Mitarbeiters speichern.
a = a + 1 'a wird bei jedem Arbeitsschritt um 1 erhöht
Ladebalken.Label.Width = b * a
Ladebalken.UnderCaption.Caption = "Lade Objektkonfiguration... "
Set Word = CreateObject("Word.Application")
'Objektkonfiguration
Word.Visible = False
Word.DisplayAlerts = 0
Word.ScreenUpdating = False
Word.Options.SaveNormalPrompt = False
Word.Options.SavePropertiesPrompt = False
a = a + 1
Ladebalken.Label.Width = b * a
Ladebalken.UnderCaption.Caption = "Speichere als PDF... "
Documents.Open D1 (Hier zeigt mir der Debugger meinen Fehler)
a = a + 1
Ladebalken.Label.Width = b * a
Ladebalken.UnderCaption.Caption = "Speichere als PDF... "
ActiveDocument.ExportAsFixedFormat OutputFileName:=Worksheets("Speicherpfade").Range("B5").Value & "" & Worksheets("Übersicht").Range("C3").Value & "_" & Worksheets("Übersicht").Range("B3").Value & "_" & Worksheets("Übersicht").Range("M3").Value & "Vertrag" & ".pdf", _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _
OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
ActiveDocument.Close False
a = a + 1
Ladebalken.Label.Width = b * a
Set Word = Nothing
a = a + 1
Ladebalken.Label.Width = b * a
Ladebalken.UnderCaption.Caption = "Fertig!"
Ladebalken.Caption = "Fertig!"
Application.Wait (Now + TimeValue("0:00:02"))
Unload Ladebalken
MsgBox "Dokumente wurden erfolgreich erstellt.", vbOKOnly, "Hinweis"
'UserForm schließen, Tabellenblatt wechseln und zweite UserForm laden.
Worksheets("Start").Select
Auswahlfenster.Show vbModeless
End If
End Sub