Ich habe einen Nadeldrucker und der hunzt, wenn er einen mehrseitigen Druckauftrag erhällt. Darum habe ich folgendes Makro geschrieben, um den Druckauftrag aufzuteilen (Ich will nicht für jede Seite extra auf Datei|Drucken|Seiten:expressionless:OK drücken).
Sub Mehrseitendruck()
'
' Mehrseitendruck Makro
' Druckt ein mehrseitiges Dokument als einzelne Seiten
'
For seite = 1 To 7
antwort = MsgBox("Bitte Papier nachlegen für Seite " + Str(seite))
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= \_
wdPrintDocumentContent, Copies:=1, Pages:=Str(seite), PageType:=wdPrintAllPages, \_
Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, \_
PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
Next seite
End Sub
Jetzt habe ich folgendes Problem: Ich möchte die
7
durch die Anzahl der Seiten ersetzen, kenne aber diese Umgebungsvariable nicht. Außerdem steht im Druckauftragsfenster vor den Aufträgen so lange
Warteschlange
bis alle Seiten im Auftrag sind. Erst dann druckt er.
Wer kann halfen?
P.S. VBE-Hilfe nicht installiert und Office2000-CD verliehen. Ich hab win98.
Jetzt habe ich folgendes Problem: Ich möchte die
7
durch die Anzahl der Seiten ersetzen, kenne aber diese
Umgebungsvariable nicht.
Mit der Umgebungsvariablen sieht deine FOR-Anweisung wie folgt aus:
For Seite = 1 To Application.ActiveDocument.BuiltInDocumentProperties("Number of Pages")
Außerdem steht im
Druckauftragsfenster vor den Aufträgen so lange
Warteschlange
bis alle Seiten im Auftrag sind. Erst
dann druckt er.
Wer kann halfen?
P.S. VBE-Hilfe nicht installiert und Office2000-CD verliehen.
Ich hab win98.
Folgende Variante deines Makro beschleunigt die Ausgabe, da du nicht jede Seite einzeln bestätigen muß. Zu Beginn des Makros muß du nur den Druckauftrag bestätigen oder abbrechen, dann werden alle Seiten einzeln gedruckt.
Sub Mehrseitendruck()
'
' Mehrseitendruck Makro
' Druckt ein mehrseitiges Dokument als einzelne Seiten
'
If MsgBox("Soll Dokument gedruckt werden?", vbOKCancel, "Mehrseitendruck") = vbCancel Then Exit Sub
For Seite = 1 To Application.ActiveDocument.BuiltInDocumentProperties("Number of Pages")
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= \_
wdPrintDocumentContent, Copies:=1, Pages:=Str(Seite), PageType:=wdPrintAllPages, \_
Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, \_
PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
Next Seite
End Sub
Gruß
Franz
Die Beschleunigung des Makros nützt nichts, da mein Drucker nur eine einzige Seite im Buffer haben darf. Abhilfe: Papierzufuhr auf ‚Manuell‘ schalten. Dann kommt die Papieraufforderung von allein.
Mit der Variablen hast du mir sehr geholfen.
Aber wie definiert man in VB ein Array? Mit Dim? Syntax?
Aber wie definiert man in VB ein Array? Mit Dim? Syntax?
Hallo Johannes,
hier ein paar Beispiele für die Dim-Anweisung
' Beispiel für 2 Dimensionales Array ohne Typ-Festlegung (Typ ist dann Variant)
' Zählung der Indizes beginnt bei 0 oder bei 1 wenn mit Option Base
' auf Modulebene so festgelegt
Dim Variablenname1(10, 5)
' Beispiel mit unterer und oberer Grenze für Indizes und Typfestlegung
Dim Variablenname2(1 To 10, 1 To 5) As String
' Beispiel für Array, dessen Dimension variabel in der Prozedur festgelegt werden soll
Dim Variablenname3() As Variant
' ...
' ...
ReDim Variablenname3(I, K)
Gruß
Franu