"Microsoft Excel funktioniert nicht mehr" bei Ausführen eines Makros

Hallo Gemeinde :smile:

ich benutze über ein Worksheet diverse Makros.

Ein Makro macht mir dabei Probleme, denn nach Ausführen des Makros (in diesem Falle sollen vier Dateien ausgedruckt werden) stürzt Excel mit der o.g. Fehlermeldung ab, jedoch warden alle Seiten korrekt ausgedruckt.

Hier das Makro, vllt. findet jemand den Fehler? :

Sub Druck_Cashier_DailySafeMovement()
Dim wb As Object
Set wb = GetObject(„G:\Forum\Empfang\Night-Shift\Vorlagen\CashierSheet.xls“)
wb.Worksheets(1).PrintOut
Set wb = GetObject(„G:\Forum\Empfang\Night-Shift\Vorlagen\Daily Safe Movement.xls“)
wb.Worksheets(1).PrintOut
Set wb = GetObject(„G:\Forum\Empfang\Night-Shift\Vorlagen\MVV Ticket Verkauf täglich.xls“)
wb.Worksheets(1).PrintOut
Set wb = GetObject(„G:\Forum\Empfang\Night-Shift\Tägliche Unterschriftenmappe FO.xlsx“)
wb.Worksheets(1).PrintOut

Application.DisplayAlerts = False
Set wb = CreateObject(„Word.Application“)
wb.DisplayAlerts = wdAlertsNone
wb.Documents.Open Filename:=„G:\Forum\Empfang\Night-Shift\Schlüsselbuch.docx“
wb.ActiveDocument.PrintOut
wb.Quit
Set wb = Nothing

End Sub

Hallo,

warum öffnest Du eine Excel-Datei per VBA mit GetObject? Das ist nicht notwendig, denn Excel VBA stellt Dir zum Öffnen von Excel Dateien die Methode Application.Workbooks.Open zur Verfügung.

Zudem würde ich nicht dieselbe Variable für Excel und Word verwenden. Anbei ein PseudoCode, den Du anpassen und entsprechend ausbauen müsstest (ungetestet).

Sub Druck_Cashier_DailySafeMovement()

  Dim wb  As Workbook
  Dim ww  As Object
  
  Set wb = Application.Workbooks.Open("G:\Forum\Empfang\Night-Shift\Vorlagen\CashierSheet.xls")
  
  wb.Worksheets(1).PrintOut
  wb.Close
  
' :
' :
  
  Set ww = CreateObject("Word.Application")
  
' :
' :
  
  
  Set wb = Nothing
  Set ww = Nothing
  
End Sub

Gruß

Hallo,

vielen herzlichen Dank- Dein Tipp hat funktioniert.

Bisher funktionierte alles mit GetObject, bevor ich eine Datei hinzugefügt hatte- und sofern das funktioniert, bleibt man bei bewährtem.

Kannst Du mir sagen, warum man den Befehl „GetObject“ vermeiden sollte und warum eine einzige Variable bei Word & Excel nicht nutzen sollte?

Bin in VBA nicht besonders bewandert. Hatte vor Jahren dieses Worksheet mit Hilfe der damaligen Kenntnisse in C# erstellt.

vG

Moin,

mit GetObject sprichst Du m.E. in dem Fall die Automatisierungsschnittstelle von Excel an, was doppelt gemoppelt und somit unnötig ist, da Du Dich ja bereits in Excel befindest.

Jetzt, wo ich nochmal über den Erstbeitrag schauen, die gleiche Objektvariable, die ja noch im Speicher rumhing, hast Du zum Aufrufen von Word verwendet, ohne die Variable vorher freizugeben, z.B. durch Set wb = Nothing. Möglicherweise würde es dann auch nicht mehr abstürzen; was ich allerdings nicht getestet habe.

Gruß