Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Remote Server Computer nicht verügbar
03.08.2021 07:16:52
Raptor
Hallo Forum,
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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
lass Word aus dem Spiel...
03.08.2021 07:42:34
Oberschlumpf
Hi,
...und erstell doch in Excel eine Mustertabelle, die eben gau so wie dein (Word)Brief aussieht.
So hast du den Vorteil, dass du alle Daten aus dem (Excel)Userform(ular) auch nur innerhalb von Excel verarbeiten musst - den "Umweg" über Word kannst du dir sparen - wozu benötigst du eigtl Word?
Auch das Ausdrucken von Serienbriefen wäre in Excel mit deiner Brief-Muster-Tabelle möglich. Du müsstest die notwendige Datentabelle nur mit Excel verbinden, oder, noch besser, direkt in Excel eintragen - Tabellen gibt es da ja genug.
Hilfts?
Wenn du weiterhin an Word "festhalten" willst/musst, bin ich raus, da ich dazu keine Idee habe.
Ciao
Thorsten
Anzeige
AW: lass Word aus dem Spiel...
03.08.2021 07:48:15
Raptor
Hey Thorsten,
Dank für deine Antwort. Ich benötige Word, da ich ca. 20 - 30 Word Dokumente habe aus denen sich der Vertrag zusammensetzt, weshalb ich auch gerne bei Word bleiben würde.
Gruß
Raptor
AW: lass Word aus dem Spiel...
03.08.2021 08:02:29
Oberschlumpf
...dann setz ich mal für dich den Haken (nicht Hacken!), um die Option zu aktivieren, dass deine Frage noch nicht beantwortet ist...
AW: lass Word aus dem Spiel...
03.08.2021 08:39:05
Der
Hallo,
ohne irgendetwas ausprobiert zu haben, sind mir bei einer kurzen Durchsicht folgende Dinge aufgefallen:
Hier bezieht sich Documents auf das Application-Object von Excel:
Documents.Open D1 (Hier zeigt mir der Debugger meinen Fehler)
Du willst aber offensichtlich eine Word-Datei öffnen. Daher musst Du wahrscheinlich das Word-Objekt davor setzen:
Word.Documents.Open D1 (Hier zeigt mir der Debugger meinen Fehler)
Hier das gleiche Problem:
ActiveDocument.ExportAsFixedFormat ...
Oben hast Du es so gemacht:
Set Doc1 = Word.Documents.Open(D1)
Warum hier nicht auch? Dann kannst Du es (hoffentlich) mit dem folgenden Code exportieren:
Doc1.ExportAsFixedFormat ...
Excel kenn die Word-Konstanten nicht. Demnach gibt es z. B. wdExportFormatPDF, wdExportOptimizeForPrint, wdExportAllDocument etc. nicht. Diese Konstanten musst Du in Word ermittlen, z. B. im Direktfenster unter Word mit ?wdExportFormatPDF. Diese Zahlen setzt Du dann statt der Konstante ein.
Viele Grüße
Michael
Anzeige
AW: lass Word aus dem Spiel...
03.08.2021 09:08:29
Raptor
Hallo Michael,
ich habe es ausprobiert leider ohne Erfolg... Er bringt mir schon beim 1. Versuch eine Fehlermeldung
Gruß
Raptor
AW: Remote Server Computer nicht verügbar
03.08.2021 08:59:35
Luschi
Hallo Raptor,
hinsichtlich Word arbeitest Du doppelt-gemoppelt:
- Set Word = CreateObject("Word.Application") 'Ist Late Binding
- alle Word-eigenen Konstanten wie wdExportFormatPDF, wdExportOptimizeForPrint usw.
- erfordern aber einen Vba-Verweis auf Word in Excel und das ist Early Binding
- um die Wordkonstanten bei Late Binding nutzen zu können, muß man sie gegen ihren numerischen Wert austauschen
- oder besser: in Excel-Vba neu definieren, zB: Const wdExportFormatPDF As Integer = 17
- dann kann man wdExportFormatPDF auch im Excel-Vba benutzen ohne auf Early Binding umzuswitchen
- Bei Early Binding ist dieser Dim-Befehl tückisch: Dim Word As Object
- denn dann kennt Excel automatisch die Variable Word als Word.Applikations-Objekt für Winword
- da Du Word per Vba nie beendest (Quit-Anweisung) aber beim nächsten Versuch wieder 'CreateObject' verwendest
- kann hier die Ursache an der Fehlermeldung liegen, auch wenn Du zu Beginn Word killst
- Überprüfe zuerst mit 'GetObject', ob Word bereits geöffnet ist
- dieser Befehl ifunktioniert bei mir nicht und ist sicher falsch geschrieben
  Set objWindowsService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\.rootcimv2")
- bei mir unter Win10-64 funktioniert: Set objWindowsService = GetObject("winmgmts://./root/cimv2")
- und in der anschließenden Schleife werden dann alle geöffneten Word-Instanzen geschlossen
- allerdings ohne Nachfrage, ob noch nicht gespeicherte Dokumente abgespeichert werden sollen
- so ein resoluten Abschießen von Programmen macht sich nicht gut, wenn auch andere User das Makro nutzen wollen/Müssen
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Remote Server Computer nicht verügbar
03.08.2021 09:00:47
Luschi
Hallo Raptor,
hinsichtlich Word arbeitest Du doppelt-gemoppelt:
- Set Word = CreateObject("Word.Application") 'Ist Late Binding
- alle Word-eigenen Konstanten wie wdExportFormatPDF, wdExportOptimizeForPrint usw.
- erfordern aber einen Vba-Verweis auf Word in Excel und das ist Early Binding
- um die Wordkonstanten bei Late Binding nutzen zu können, muß man sie gegen ihren numerischen Wert austauschen
- oder besser: in Excel-Vba neu definieren, zB: Const wdExportFormatPDF As Integer = 17
- dann kann man wdExportFormatPDF auch im Excel-Vba benutzen ohne auf Early Binding umzuswitchen
- Bei Early Binding ist dieser Dim-Befehl tückisch: Dim Word As Object
- denn dann kennt Excel automatisch die Variable Word als Word.Applikations-Objekt für Winword
- da Du Word per Vba nie beendest (Quit-Anweisung) aber beim nächsten Versuch wieder 'CreateObject' verwendest
- kann hier die Ursache an der Fehlermeldung liegen, auch wenn Du zu Beginn Word killst
- Überprüfe zuerst mit 'GetObject', ob Word bereits geöffnet ist
- dieser Befehl ifunktioniert bei mir nicht und ist sicher falsch geschrieben
  Set objWindowsService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\.rootcimv2")
- bei mir unter Win10-64 funktioniert: Set objWindowsService = GetObject("winmgmts://./root/cimv2")
- und in der anschließenden Schleife werden dann alle geöffneten Word-Instanzen geschlossen
- allerdings ohne Nachfrage, ob noch nicht gespeicherte Dokumente abgespeichert werden sollen
- so ein resoluten Abschießen von Programmen macht sich nicht gut, wenn auch andere User das Makro nutzen wollen/Müssen
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Remote Server Computer nicht verügbar
03.08.2021 11:09:40
JoWE
Beenden/Schliessen der Word-Instanz mit Quit,
in Deinem Code würde das so aussehen: word.quit
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige