Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Makro Fehler

Betrifft: Makro Fehler von: Julian M
Geschrieben am: 14.09.2020 10:54:30

Sehr geehrte Damen und Herren,


ich hoffe das Sie mir weiterhelfen können.


Ich arbeite innerhalb unserer Behörde mit einer Personenbezogenen Datenbank welche in Excel eine Personenerfassung durchführt und dann später mittels vieler Makros automatisch diese Daten in verschiedene Word Dateien einpflegt und diese ausdruckt.

Das vereinfacht mir seit Monaten sehr die Arbeit. Leider hat irgend ein innerbehördliches Update dazu geführt das Makros fehlerhaft sind bzw. fehlten. Da mein Vorgänger diese Makros geschrieben hat, bin ich jetzt komplett überfordert.


Sollte ich die Makros nicht mehr zum laufen kriegen, wird eine Nebentätigkeit welche nur 5 Minuten gedauert hat jetzt zu einer sehr sehr langwierigen Geschichte.


Ich habe leider keine Ahnung von der Materie, also bitte sehen Sie es mir nach wenn ich mich da sehr laienhaft anstelle.


Ich werde aufgrund von Datenschutz, Namen von Formularen bzw Netzwerkadressen mit XXXX abändern.


Erklärung:

Ich versuche folgendes Makro abzuspielen.







Sub Druck_Aller_Unterlagen()
 Sheets("Deckblatt").Select
    ActiveWindow.SmallScroll Down:=-15
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Sheets("Unterlagen").Select
    ActiveWindow.SmallScroll Down:=-18
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Sheets("SÜ").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    ActiveWorkbook.Save
    Sheets("Datenblatt").Select
    Range("D3:H3").Select
CreateObject("Word.application").Documents.Open("I:XXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\  _
Sonder-und Waffenausweise\Formulare\TEST\5_UZwGBw_TEST.docx").Application.Visible = True
Set wordbasic = GetObject("I:\xxxxxxxxxxTE 122_ZE FD 2.1\FD 2.1 - Ausweise\ _
Sonder-und Waffenausweise\Formulare\TEST\5_UZwGBw_TEST.docx")
Set wb = wordbasic.Parent
wb.Run "UZwGBwDruck"      <-------- Hier wird der Fehler deklariert
Set wordbasic = Nothing
Set wb = Nothing
CreateObject("Word.application").Documents.Open("I:\XXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\ _
 _
 _Sonder-und Waffenausweise\Formulare\TEST\3_Herr_Niederschrift_foermliche_Verpflichtung_TEST.  _
_
docx").Application.Visible = True
Set wordbasic = GetObject("I:\XXXXXXXXTE 122_ZE FD 2.1\FD 2.1 - Ausweise\Sonder-und  _
Waffenausweise\Formulare\TEST\3_Herr_Niederschrift_foermliche_Verpflichtung_TEST.docx")
Set wb = wordbasic.Parent
wb.Run "Anlage3DruckHerr"
Set wordbasic = Nothing
Set wb = Nothing
CreateObject("Word.application").Documents.Open("I:\IUD\BwDLZKiel\InnereDienste\TE 122_ZE FD 2.  _
 _
 _
 _
 _
 _
 _
 _
_
1\FD 2.1 - Ausweise\Sonder-und Waffenausweise\Formulare\TEST\4_Erklärung über die allgemeine  _
Sicherheitsbelehrung_TEST.docx").Application.Visible = True
Set wordbasic = GetObject("I:\XXXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\Sonder-und  _
Waffenausweise\Formulare\TEST\4_Erklärung über die allgemeine Sicherheitsbelehrung_TEST.docx")
Set wb = wordbasic.Parent
wb.Run "Anlage4DruckNeu"
Set wordbasic = Nothing
Set wb = Nothing
CreateObject("Word.application").Documents.Open("I:\IUD\XXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 -  _
Ausweise\Sonder-und Waffenausweise\Formulare\TEST\1_Empfangsbestätigung für einen  _
Dienstausweis_TEST.docx").Application.Visible = True
Set wordbasic = GetObject("I:\IUD\XXXXXXXXXx\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\Sonder-und  _
Waffenausweise\Formulare\TEST\1_Empfangsbestätigung für einen Dienstausweis_TEST.docx")
Set wb = wordbasic.Parent
wb.Run "EmpfangAusweisDruck"
CreateObject("Word.application").Documents.Open("I:\IUD\XXXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 -  _
Ausweise\Sonder-und Waffenausweise\Formulare\TEST\2_Anlage_A_8.docx").Application.Visible =  _
True
Set wordbasic = GetObject("I:\IUD\XXXXXXXXTE 122_ZE FD 2.1\FD 2.1 - Ausweise\Sonder-und  _
Waffenausweise\Formulare\TEST\2_Anlage_A_8.docx")
Set wb = wordbasic.Parent
wb.Run "Anlage8A"
Set wordbasic = Nothing
Set wb = Nothing
Range("K37").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K39").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K41").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K43").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K45").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K47").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K49").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("K51").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("J55").Select
    ActiveCell.FormulaR1C1 = "FALSE"
    Range("D3:H3").Select
    Selection.ClearContents
Set wordbasic = Nothing
Set wb = Nothing
End Sub



Ich erhalte folgende Meldung Laufzeitfehler: -2147352573 (80020003)

Der Fehler im Quellcode wurde von mir schwarz darsgestellt.


Nach meiner Interpretation sagt er mir das der Quellpfad des Makro UZwGBwDruck falsch sei.

Dieser Fehler tritt bei mehreren Druck Makros auf.


Hier die Quelltexte der Makros:







Sub UZwGBwDruck()
'
' UZwGBwDruck Makro
'
'
    ActivePrinter = "\\P01KIESM02.itbw.itb.local\P01031353P"
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentWithMarkup, Copies:=2, Pages:="", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
    ActiveDocument.Close
    Application.Quit
End Sub








Sub Anlage3DruckHerr()

'

' Anlage3DruckHerr Makro

'

'

Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _

wdPrintDocumentWithMarkup, Copies:=2, Pages:="", PageType:= _

wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _

PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _

PrintZoomPaperHeight:=0

ActiveDocument.Close

Application.Quit

End Sub








Sub Anlage4DruckNeu()

'

' Anlage4DruckNeu Makro

'

ActivePrinter = "\\P01KIESM02.itbw.itb.local\P01031353P"

Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _

wdPrintDocumentWithMarkup, Copies:=2, Pages:="", PageType:= _

wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _

PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _

PrintZoomPaperHeight:=0

ActiveDocument.Close

Application.Quit

End Sub








Sub EmpfangAusweisDruck()

'

' EmpfangAusweisDruck Makro

'

'

Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _

wdPrintDocumentWithMarkup, Copies:=2, Pages:="", PageType:= _

wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _

PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _

PrintZoomPaperHeight:=0

ActiveDocument.Close

Application.Quit

End Sub








Sub Anlage8A()

'

' Anlage8A Makro

'

'

Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _

wdPrintDocumentWithMarkup, Copies:=2, Pages:="", PageType:= _

wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _

PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _

PrintZoomPaperHeight:=0

ActiveDocument.Close

Application.Quit

End Sub








Sub DruckAusgeblendetEinAus()

On Error Resume Next

If Options.PrintHiddenText = False Then

If MsgBox("Verfügung nutzen?", vbYesNo) = vbYes Then

Options.PrintHiddenText = True

End If

Else

If MsgBox("Anschreiben nutzen?", vbYesNo) = vbYes Then

Options.PrintHiddenText = False

End If

End If

End Sub


Da mir zunächst der Drucker als Fehlerquelle gemeldet wurde, habe ich diesen aktualisiert.

Der Neue Quellcode des Makro lautet somit.






Sub UZwGBwDruck()
'
' UZwGBwDruck Makro
'
'
    ActivePrinter = "\\P01KIESM02.itbw.itb.local\P01031353P auf Ne07:"
    Application.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentWithMarkup, Copies:=2, Pages:="", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
 PrintZoomPaperHeight:=0   <------- Fehlermeldung
 
    ActiveDocument.Close
    Application.Quit
End Sub


Ich erhalte nun Laufzeitfehler 438

Objekt unterstützt diese Eigenschaft oder Methode nicht.


Im Debugger erhalte ich nun den gelben Pfeil bei der oben gestellten Position



Wenn ich jetzt versuche einfach diese Position zu entfernen erhalte ich einen "Parameterfehler, Fehler beim Kompilieren".


Ich bin nun wirklich Ratlos was ich machen kann.


Wenn Sie mir dabei helfen können, wäre ich Ihnen sehr verbunden.


Danke im voraus.


Gruß



Julian M

Betrifft: AW: Makro Fehler
von: Nepumuk
Geschrieben am: 14.09.2020 11:50:36

Hallo Julian,

teste mal das Makro "Druck_Aller_Unterlagen1". Du musst aber in den Word-Makros diese Zeilen raus nehmen:
    ActiveDocument.Close
    Application.Quit
Option Explicit

Public Sub Druck_Aller_Unterlagen()
    
    Dim objWord As Object
    
    Worksheets("Deckblatt").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Worksheets("Unterlagen").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Worksheets("SÜ").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    
    Set objWord = CreateObject("Word.application")
    objWord.Visible = True
    
    objWord.Documents.Open ("I:XXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\" & _
        "Sonder-und Waffenausweise\Formulare\TEST\5_UZwGBw_TEST.docx")
    objWord.Run "UZwGBwDruck"
    objWord.ActiveDocument.Close False
    
    objWord.Documents.Open ("I:\XXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\" & _
        "Sonder-und Waffenausweise\Formulare\TEST\3_Herr_Niederschrift_foermliche_Verpflichtung_TEST.docx ")
    objWord.Run "Anlage3DruckHerr"
    objWord.ActiveDocument.Close False
    
    objWord.Documents.Open ("I:\IUD\BwDLZKiel\InnereDienste\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\" & _
        "Sonder-und Waffenausweise\Formulare\TEST\4_Erklärung über die allgemeine Sicherheitsbelehrung_TEST.docx")
    objWord.Run "Anlage4DruckNeu"
    objWord.ActiveDocument.Close False
    
    objWord.Documents.Open ("I:\IUD\XXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\" & _
        "Sonder-und Waffenausweise\Formulare\TEST\1_Empfangsbestätigung für einen Dienstausweis_TEST.docx")
    objWord.Run "EmpfangAusweisDruck"
    objWord.ActiveDocument.Close False
    
    objWord.Documents.Open ("I:\IUD\XXXXXXXXX\TE 122_ZE FD 2.1\FD 2.1 - Ausweise\" & _
        "Sonder-und Waffenausweise\Formulare\TEST\2_Anlage_A_8.docx")
    objWord.Run "Anlage8A"
    objWord.ActiveDocument.Close False
    
    objWord.Quit
    Set objWord = Nothing
    
    With Worksheets("Datenblatt")
        Range("K37").Value = False
        Range("K39").Value = False
        Range("K41").Value = False
        Range("K43").Value = False
        Range("K45").Value = False
        Range("K47").Value = False
        Range("K49").Value = False
        Range("K51").Value = False
        Range("J55").Value = False
        Range("D3:H3").ClearContents
    End With
    
    ThisWorkbook.Save
    
End Sub

Zu deinem Word-Fehler kann ich nichts sagen, dazu kenne ich mich darin nicht aus. Frag in einem Word-Forum. Z.B. Hier

http://www.office-loesung.de/p/viewforum.php?f=162

Gruß
Nepumuk

Betrifft: AW: Makro Fehler
von: Nepumuk
Geschrieben am: 14.09.2020 11:52:50

Ooooops,

da fehlen noch die Bezugspunkte. Bitte korrigieren:

With Worksheets("Datenblatt")
    .Range("K37").Value = False
    .Range("K39").Value = False
    .Range("K41").Value = False
    .Range("K43").Value = False
    .Range("K45").Value = False
    .Range("K47").Value = False
    .Range("K49").Value = False
    .Range("K51").Value = False
    .Range("J55").Value = False
    .Range("D3:H3").ClearContents
End With

Gruß
Nepumuk

Betrifft: AW: Makro Fehler
von: Julian M
Geschrieben am: 14.09.2020 12:02:23

Ich werde es gleich mal testen.

Was ich eben vergessen habe mitzuteilen ist, das er alle Unterlagen aufruft, er füllt diese auch aus und überträgt die Daten.


Der Vorgang des Druckens wird aber nicht eingeleitet. Das ist das eigentliche Problem.
Kann es sein das der Quellcode des Vorgangs sich geändert hat?

Letzte Woche hatte das noch wunderbar funktioniert.

Betrifft: AW: Makro Fehler
von: Nepumuk
Geschrieben am: 14.09.2020 12:09:22

Hallo Julian,

kann ich nicht sagen. Mit meiner Testdatei funktioniert es unter Office 2013.

Gruß
Nepumuk

Betrifft: was war denn das für ein update?
von: ralf_b
Geschrieben am: 14.09.2020 13:27:02

evtl. Druckertreiber?

Betrifft: AW: Makro Fehler
von: Frank Svoboda
Geschrieben am: 14.09.2020 16:55:40

Hallo Julian,

möglicherweise heißt der Drucker inzwischen anders als bei ActivePrinter angegeben.

Viele Grüße
Frank

Beiträge aus dem Excel-Forum zum Thema "Makro Fehler"