Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA: PrintOut und dann warten bis er fertig ist





Frage

Hallo, ich habe ein Problem mit meinem VBA Script. Leider läuft es immer schon weiter bevor Excel ausgedruckt hat. Für Word gibt es da anscheinend eine Option Background := false dann wird nichts unternommen bevor das Script nicht zu ende gelaufen ist. Leider gibts diese Funktion wohl nicht in Excel. Hat jemand trotzdem ne Idee wie man es löen könnte oder kennt eine Funktion? Viele Grüße Oli

Antwort 1 von Beverly

Hi Oli,

ich kenne deinen Code nicht, aber vielleicht hilft dir der Hinweis Application.Wait weiter

Bis späer,
Karin

Antwort 2 von Oli00

Hi Karin,

Code ist sehr einfach. In etwa:


Do

´Combobox wird eins hochgezählt
´nach Shapes suchen und Shapes löschen
´neues Shape für Auswahl Kombobox kopieren

Sheets.Printout

Loop

Das Problem ist, dass das Drucken nicht schnell genug geht und er deswegen einen Fehler beim löschen des Shapes bringt und das Macro einen Error bringt.

Der Ansatz mit Wait ist gut. Damit ist es sicher lösbar, allerdings nicht zuverlässig bzw. nur mit großen Verzögerungen. Deswegen hab ich nach einer Funktion gesucht die einen True Wert liefert. Wundert mich echt, dass es sowas nicht gibt ...

Viele Grüße

Oli

Antwort 3 von coros

Hallo Oli,

mir ist nicht bekannt, dass man das Ende eines Druckauftrages so einfach in Excel mit Excelmitteln ermitteln kann. Über API wird das sicherlich gehen, ist aber sicher nicht ganz einfach. Aber setze doch mal hiner dem PrintOut-Befehl ein "DoEvents". Eventuell funktionierts dann besser. Ist aber ungetestet, da ich keine Lust habe, Deinen nicht ganz bekannten Code nach zu bauen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Oli00

Hi Oliver,

vielen Dank. Werde ich gleich mal auf der Arbeit ausprobieren. Hatte den Code leider nicht hier sonst hätte ich ihn mal geposted.

Viele Grüße

Oli

Antwort 5 von Oli00

Hi Oliver,

also das mit den DoEvents hat leider nich funktioniert.

Hier trotzdem noch mal der Code.

Sub Print_out()
Query_client
Dim Ablauf
wb = ActiveWorkbook.Name
Sheets(Array("Result_1", "Result_2", "Result_3")).Select
Sheets("Result_1").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
DoEvents
End Sub

Sub Query_client()
Sheets("Illustration1_source").Select
application.Goto Reference:="Ess_Illustration1"
x = EssMenuVRetrieve()

Sheets("Graphics_source").Select
application.Goto Reference:="Ess_Graphics"
x = EssMenuVRetrieve()

Sheets("Tables_source").Select
application.Goto Reference:="Ess_Tables"
x = EssMenuVRetrieve()

Sheets("Control").Select
End Sub


Public Static Sub ComboBox1_Change()
´ ------------------- Löschen der alten Bilder -----------------------
For Each Shape In Worksheets("Result_1").Shapes
If Shape.Type = msoPicture Then
Shape.Delete
End If
Next


Der Fehler tritt ganz am Ende, also beim löschen der alten Bilder auf. Nach dem Löschen der alten Bilder sollen dann wieder neue reinkopiert werden. Der Fehler heisst:

Laufzeitfehler ´1004´:
Anwendungs oder Objektdefinierter Fehler

Viele Grüße

Oli

Antwort 6 von Oli00

Hi,

ich habe jetzt mal nach dem Audrucken ein:

Sheets("Control").Activate

Welches das Sheet mit der Combobox ist gesetzt. Damit klappt es jetzt. Ich glaub der Hase lag wohl im Endeffekt ganz woanders versteckt.

Vielen Dank trotzdem noch einmal für eure Hilfe!

Grüße
Oli

Antwort 7 von coros

Hallo Oli,

das mit dem DoEvents kann auch nichts bringen, denn das sind ja verschiedene Makros. Das sieht irgendwie alles ganz anders aus als in Deiner AW2 beschrieben. Warum?
Welche Zeile wird den angezeigt, bzw. markiert, wenn der Fehler auftritt?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von Oli00

Hi,

markiert wurde Shape.Delete

Der Code hat anders ausgesehen, weil ich es nicht perfekt im Kopf hatte und versucht habe die Informationen zu geben, die für die Problemlösung dienlich gewesen wären.

Viele Grüße

Oli

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: