gimli3311
Goto Top

MsgBox Druckeinrichtung mit VBA abschalten

Guten Tag Zusammen,

durfte gestern ein altes Programm wieder rausholen und testen. Dabei habe ich jetzt folgendes Problem:

Das Programm öffnet xls/xlsx-Dateien und prüft sie auf gewisse Kriterien.
Beim öffnen der Dateien kommt es vor das eine MsgBox aufgeht und man die Druckeinrichtung auswählen soll.
Habe natürlich davor mit Google gesucht und nur den Befehl Application.DisplayAlerts = False gefunden, der den Warnhinweise/ Fehlermeldungen ausblenden sollte.
Diesen Befehl nutze ich aber schon und trotzdem erscheint das Fenster :/

Hätte jemand ein Tipp für mich wie ich die Meldung entweder umgehen kann oder so hinbekommen das vba automatisch Abbrechen drückt wenn diese Meldung erscheint?

Hier noch ein Codeschnipsel vom Programm der es vlleicht verständlicher macht:

 'Bildschirmgeflacker und Meldungen AUSschalten  
            Application.ScreenUpdating = False
            Application.DisplayAlerts = False
        
        'Max Daten Wert zuordnen  
            lngMaxData = objFoundFiles.Count
        'Worksheet Tabelle auswählen  
            Output.Activate
        'Für jede gefundene Datei in der Collection  
            For Each f In objFoundFiles
            
            'Variablen Werte zuweisen  
                strPathName = fso.GetParentFolderName(f)
                strFileName = fso.GetFileName(f)
                StrFullPathFileName = fso.GetAbsolutePathName(f)
                strAutoren = GetFileProperty(StrFullPathFileName, 20)
                strTitle = GetFileProperty(StrFullPathFileName, 21)
                strDataModified = GetFileProperty(StrFullPathFileName, 3)
                strDataCreated = GetFileProperty(StrFullPathFileName, 4)

            'Sucht nächste Freie Zeile  
                lngRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
            
            'Gibt die Datei informationen aus  
              Cells(lngRow, 1) = strPathName
              Cells(lngRow, 2) = strFileName
              Cells(lngRow, 3) = strTitle
              Cells(lngRow, 4) = strAutoren
              Cells(lngRow, 5) = strDataModified
              Cells(lngRow, 6) = strDataCreated
            
            'Fehlermeldung ausschalten  
                On Error Resume Next
            
            'öffne Datei, nur Lesen, Keine Updates  
                Set wb = Workbooks.Open(f, ReadOnly:=True, UpdateLinks:=0, Password:="Passwort").Sheets(1)  

                'Suche nach Logbuch oder Logbook in Datei --> Funktion: search()  
                    blFound = search()
                
                'Ruft Funktion checkTemplate auf und gibt eine Ganzzahl zurück ()  
                    lngTemplate = checkTemplate(blFound, strFileName)
            'Schließe Datei. False = ohne zu speichern!  
                wb.Parent.Close False
            
            'Aktiviert Tabelle Output  
                Output.Activate
            
            'Wenn blFound = True wurde was gefunden  
                If blFound = True Then
                    Cells(lngRow, 7) = "JA"  
                    Cells(lngRow, 7).Interior.Color = vbGreen
                Else
                    Cells(lngRow, 7) = "NEIN"  
                    Cells(lngRow, 7).Interior.Color = vbRed
                End If
            
            'Ausgabe Welche Vorlage  
                If lngTemplate <> 0 Then
                    Cells(lngRow, 8) = lngTemplate
                Else
                    Cells(lngRow, 8) = lngTemplate
                End If

            'Regelt die Zähler und Abbruchkriterien  
                lngMaxData = lngMaxData - 1
                lngCounter = lngCounter + 1
                Debug.Print lngMaxData
            
            'MsgBox ob nach weiteren Daten gesucht werden soll  
                If lngCounter >= lngBreak Then
                    If MsgBox("Sollen weitere Daten Angezeigt werden?", vbYesNo) = vbYes Then  
                        lngBreak = lngBreak + Worksheets("Optionen").Cells(4, 2).Value  
                    Else
                        Exit For
                    End If
            'Falls keine Daten mehr vorhanden Ausgabe  
                ElseIf lngMaxData = 0 Then
                    MsgBox "Es sind keine Daten mehr vorhanden!"  
                    Exit For
                End If
            'Zwischenspeichern  
                If lngCounter >= lngSave Then
                    ActiveWorkbook.Save
                    lngSave = lngSave + Worksheets("Optionen").Cells(7, 2).Value  
                End If
                
            Next
        
        'Object auf NULL setzen  
            blFound = False
            Set objFoundFiles = Nothing
        'Bildschirm und Meldungen wieder anschalten  
            Application.ScreenUpdating = True
            Application.DisplayAlerts = True



Grüße Gimli3311

Content-Key: 288806

Url: https://administrator.de/contentid/288806

Printed on: April 18, 2024 at 21:04 o'clock

Mitglied: 122990
122990 Nov 19, 2015 updated at 13:19:07 (UTC)
Goto Top
Moin,
was für ein "Druckeinrichtungsdialog" ? Zeig doch mal welchen Dialog du genau meinst.
Druckdialoge kommen eigentlich nur wenn man auch eine der Funktionen aufruft die mit dem Druck zu tun haben, die aber in deinem Code-Ausschnitt nicht ersichtlich ist, vermutlich in einem anderen Teil eures Codes ?
Außerdem enthält der Code Abfragen mit MSGBOXES und die stören dich nicht beim Batchbetrieb des Scripts?

Gruß grexit
Member: Gimli3311
Gimli3311 Nov 19, 2015 updated at 13:58:31 (UTC)
Goto Top
Hallo grexit,

Erst Mal Danke das du mir helfen willst face-smile

Sobald der Dialog kommt mach ich ein Screenshot und stell in rein. Derzeit kommt grad keiner.
(Code läuft einige Stunden)

Also in meinem Code wird niemals eine Funktion aufgerufen die etwas mit Druck zu tun hat.
Ich versuche es mal verständlich zu machen was der Code im Allgemeinen genau macht:

- Es wird in einem Dateipfad nach xls/xlsx-Dateien gesucht (ca.12.000 Dateien im derzeitigen Pfad)
- Die Pfade befinden sind objFoundFiles (Zeile 10) der jetzt jede Datei einzeln durch geht.
- Der gespeicherte Pfad also die Datei wird geöffnet (Zeile 36) Datei wird im Schreibgeschützen Modi geöffnet, es werden keine Verknüpfungen aktuallisiert und falls die Datei ein Passwort hat wird Passwort eingegeben um die Datei zu überspringen.
Genau hier öffnen manche Dateien die MsgBox Druckeinrichtung. Die ich dann Abbrechen muss ( sollte automatisch passieren oder erst gar nicht kommen)
- Die geöffnete Datei wird nun nach Kriterien geprüft ( Falls diese Stimmen wird der Inhalt kopiert --> Code in anderem Modul)
- Datei wird wieder geschlossen ohne zu speichern.

Ich hoffe das man es etwas nachvollziehen kann face-smile

Die MsgBox stören nicht da:
- MsgBox in Zeile72 dient grad zum Debuggen, ich kann das Limit hoch stellen dann wird sie nicht Angezeigt.
- MsgBox in Zeile 79 zeigt das keine Dateien mehr vorhanden sind, heißt der Code zeigt mir das er Fertig ist.

Grüße Gimli3311


PS:

fe68569e823eb5002abed8b51ca65012
Mitglied: 122990
122990 Nov 19, 2015 updated at 14:18:53 (UTC)
Goto Top
Hmm der Dialog ist mir aus Excel nicht bekannt welche Excel-Version ?
Vielleicht ein Third-Party Add-In aktiviert oder ein Drucker-Tool im Tray geladen ?
Dann all diese Sachen deaktivieren. denn das würde erklären warum dieser Dialog eingeblendet wird, weil er nicht Teil von Excel ist.
Member: Gimli3311
Gimli3311 Nov 19, 2015 at 14:20:23 (UTC)
Goto Top
Der Code wurde in Excel Version 2007, 2010 und 2013 getestet und überall kam die Meldung. Momentan arbeite ich mit der 2013 Version.

Habe Folgenden Befehl gefunden um diese MsgBox aufzurufen:

Application.Dialogs(xlDialogPrinterSetup).Show

Das Problem ist das ich die Dokumente nicht verändern darf. Sprich ich sollte da nichts deaktivieren.

Habe jetzt mal in ein Modul den oberen Code eingegeben, dieser Zeigt auch genau die MsgBox an.
Es ist doch sicherlich irgendwie möglich den Standardwert auf abbrechen zu setzten.

Gruß Gimli3311
Mitglied: 122990
Solution 122990 Nov 19, 2015, updated at Nov 26, 2015 at 13:38:20 (UTC)
Goto Top
OK, dann könnte es vermutlich auch ein Makro sein welches sich in einer der Mappen befindet die du öffnest.
Dann könnte das hier helfen:
Vor dem öffnen des Files die Events abschalten welche eventuelle AutoOpenMakros etc. in den geöffneten Dokumenten lahm legt.
application.EnableEvents = False
und hinterher wieder
application.EnableEvents = True
nicht vergessen.
Member: Gimli3311
Gimli3311 Nov 19, 2015 at 14:32:14 (UTC)
Goto Top
Danke, ich werde es mal ausprobieren und melde mich wieder
Member: Gimli3311
Gimli3311 Nov 26, 2015 at 13:39:19 (UTC)
Goto Top
@122990

Dein Lösungsansatz war der Richtige, Danke.
Hätte fast vergessen mich zu melden :D

Grüße Gimli3311
Mitglied: 122990
122990 Nov 30, 2015 updated at 16:55:49 (UTC)
Goto Top
Noch als Nachtrag und zur Info woher dieser Dialog vermutlich herkommt.

Stichwort: Anzeige der Seitenumbrüche in den Tabellen.
http://jeremykingsql.blogspot.de/2012/05/printer-setup-pop-up-when-open ...

Gruß grexit