Druck Makro fuer Excel

Hallo alle zusammen,

ich versuche verzweifelt mit meinen nichtvorhandenen Visual Basic Kenntnissen ein Makro zu generieren, welches immer einen bestimmten Bereich einer bestimmten Sorte von Tabellenblaettern drucken soll. Fuer ein Tabellenblatt ist das ja noch ganz einfach, dafuer kann ich ein Makro aufnehmen, d.h. diese Befehle brauch ich auch nicht mehr. Nun sollte aber eine Schleife den Rest der Arbeit uebernehmen und daran scheitere ich.

Hoffentlich kann mir jemand weiterhelfen. Viele Dank schon mal im Voraus.

Katrin

es ist möglich so etwas über VBa zu steuern,

jedoch deine Angaben dazu sind etwas dürftig.
bitte schick ne beispieldatei oder eine etwas genauere erklärung

mfg
Spaguzzi

Hallo, Katrin!

ich versuche verzweifelt mit meinen nichtvorhandenen Visual
Basic Kenntnissen ein Makro zu generieren, welches immer einen
bestimmten Bereich einer bestimmten Sorte von
Tabellenblaettern drucken soll. Fuer ein Tabellenblatt ist das
ja noch ganz einfach, dafuer kann ich ein Makro aufnehmen,
d.h. diese Befehle brauch ich auch nicht mehr. Nun sollte aber
eine Schleife den Rest der Arbeit uebernehmen und daran
scheitere ich.

Ich gehe mal davon aus, dass alle Dateien offen sind, in denen was gedruckt werden soll.

Dann läuft’s in etwa so:

Sub DruckeMeinenKram()
 dim wbDatei as Workbook
 dim wsSheet as Worksheet

 for each wbDatei in Workbooks
 ' Alle geöffneten Dateien durchgehen
 if wbDatei.FullName like "\*Sollgedruckt werden.xls" then
 ' ggf. beliebige Einschränkung, dass nur bestimmte Dateien 
 ' gedruckt werden sollen, hier welche, die mit 
 ' "sollgedrucktwerden.xls" enden
 ' also z. B. "Werte2004-sollgedrucktwerden.xls", nicht aber
 ' "Testdaten.xls"
 for each wsSheet in wbDatei.worksheets
 ' Jetzt alle Tabellen der Datei durchgehen
 if wsSheet.Name like "Tabelle??" then
 ' analog oben ein optionales Kriterium, hier alle Tabellen,
 ' die Tabellexx heißen, also Tabelle01, nicht aber
 ' Tabelle1 oder Tabelle123

 ' Jetzt Deinen Bereich ausdrucken oder Dein Makro aufrufen
 ' Dabei nicht "ActiveSheet", wie vermutlich in Deinem
 ' aufgezeichneten Makro, sondern mit wsSheet arbeiten

 endif
 next wsSheet
 endif
 next wbDatei
End Sub

Du könntest natürlich auch über alle Dateien eines bestimmten Verzeichnisses rüberrennen etc., das wird aber etwas länger.

Gruß, Manfred

Hallo Manfred,

erst einmal Danke fuer deine Hilfe.

Ich hab es versucht, aber es funktioniert noch nicht. Vielleicht hab ich auch noch einen kleinen Fehler drin (siehe Fragen weiter unten).

Gruss Katrin

Hallo, Katrin!

Ich gehe mal davon aus, dass alle Dateien offen sind, in denen
was gedruckt werden soll.

Dann läuft’s in etwa so:

Sub DruckeMeinenKram()
dim wbDatei as Workbook
dim wsSheet as Worksheet

for each wbDatei in Workbooks
’ Alle geöffneten Dateien durchgehen
if wbDatei.FullName like „*Sollgedruckt werden.xls“ then
’ ggf. beliebige Einschränkung, dass nur bestimmte
Dateien
’ gedruckt werden sollen, hier welche, die mit
’ „sollgedrucktwerden.xls“ enden
’ also z. B. „Werte2004-sollgedrucktwerden.xls“, nicht
aber
’ „Testdaten.xls“
for each wsSheet in wbDatei.worksheets
’ Jetzt alle Tabellen der Datei durchgehen
if wsSheet.Name like „Tabelle??“ then
’ analog oben ein optionales Kriterium, hier alle
Tabellen,
’ die Tabellexx heißen, also Tabelle01, nicht aber
’ Tabelle1 oder Tabelle123

Frage: Ich kann an dieser Stelle schon „265*“ eingeben, wenn die Gemeinsamkeit der zu druckenden Tabellenblaetter diese Bezeichnung ist und jetzt noch 3 Stellen folgen.

’ Jetzt Deinen Bereich ausdrucken oder Dein Makro
aufrufen
’ Dabei nicht „ActiveSheet“, wie vermutlich in
Deinem
’ aufgezeichneten Makro, sondern mit wsSheet
arbeiten

Frage: Ich muss ueberall, wo Sheet auftaucht mir wsSheet arbeiten, oder nur an der Stelle, an der „ActiveSheet“ auftaucht?

endif
next wsSheet
endif
next wbDatei
End Sub

Du könntest natürlich auch über alle Dateien eines bestimmten
Verzeichnisses rüberrennen etc., das wird aber etwas länger.

Gruß, Manfred

Hallo, Katrin!

Ich hab es versucht, aber es funktioniert noch nicht.
Vielleicht hab ich auch noch einen kleinen Fehler drin (siehe
Fragen weiter unten).

Kriegen wir schon hin…

Frage: Ich kann an dieser Stelle schon „265*“ eingeben, wenn
die Gemeinsamkeit der zu druckenden Tabellenblaetter diese
Bezeichnung ist und jetzt noch 3 Stellen folgen.

Wenn Du Tabellen hast, die wie folgt heißen und dann auch gedruckt werden sollen, dann ja:
265abc
265123
265-12
265abcd wird auch gedruckt. Wenn diese nicht gedruckt werden soll, dann explizit die drei Stellen angeben „265???“ Schau mal in der Hilfe unter LIKE nach, da findest Du weitergehende Möglichkeiten.

Frage: Ich muss ueberall, wo Sheet auftaucht mir wsSheet
arbeiten, oder nur an der Stelle, an der „ActiveSheet“
auftaucht?

Du hast ja Dein Makro aufgezeichnet. Das wird vielleicht so aussehen:

Sub Makro1()
' aufgezeichnet am... von...
 ActiveSheet.Range("A3:smiley:17").Select
 Selection.PrintOut Copies:=1
 ...
End Sub

Das kannst Du dann ggf. einfach wie folgt ändern:

Sub Makro1(pwsSheet as worksheet)
' aufgezeichnet am... von...
 pwsSheet.Range("A3:smiley:17").Select
 Selection.PrintOut Copies:=1
 ...
End Sub

Also jedes ActiveSheet durch pwsSheet in Deinem Makro ersetzen. Und dann an besagter obiger Stelle in der Schleife „Call Makro1(wsSheet)“ aufrufen.

Sonst poste einfach mal Dein Makro und das, was Du bislang drumrum gebastelt hast, oder schick mir die Datei per Mail.

Gruß, Manfred

1 „Gefällt mir“

Problem wurde geloest
Hallo nochmal,

jetzt nehme ich mir endlich mal die Zeit um mich bei euch zu bedanken. Ihr seid mir echt eine grosse Hilfe gewesen.

Fuer alle, die auch Probleme mit diesem Thema haben. Das Makro lautet nun folgendermassen:

Sub druckeAbxxx()
Dim wks As Worksheet
For Each wks In Worksheets
If InStr(wks.Name, xxx) Then ’ alle Tabellenblätter,die mit xxx beginnen werden gedruckt
With wks.PageSetup
.Orientation = xlLandscape

.LeftFooter = ThisWorkbook.FullName
.RightFooter = Date
.CenterHeader = "Daten von " & wks.Name
End With
wks.PrintPreview
End If
Next wks
End Sub

Also Danke ihr Beiden!

Liebe Gruesse, Katrin