Supportnet / Forum / Tabellenkalkulation
Tabellenblatt Drucken wenn Zelle nicht leer ist
Frage
Hallo,
ich mal wieder. Ich brauche Eure Hilfe.
Ich hab eine Datei mit mehreren Tabellenblätter 1-5. Auf dem ersten Tabellenblatt habe ich eine Button eingefügt, der bei Betätigung alle Tabellenblätter über den Drucker in ein PDF umwandelt. Jetzt habe ich folgendes Problem. Nicht immer sind in jedem Tabellenblatt Werte in den Tabellen eingetragen. Die Tabellen ohne Werte sollen dann ja auch nicht in die PDF Datei mit umgewandelt werden.
Kann man das irgendwie lösen, wenn im z.B. Tabellenblatt 3 in der Zelle C3 kein Wert eingetragen ist, dann soll dieses Tabellenblatt auch nicht mit in die PDF-Datei, die anderen Tabellen wo Zelle C3 ausgefüllt ist sollen auch umgewandelt werden. Diese Bedingung auch für die anderen Tabellenblätter, ausgenommen Tabellenblatt 1, was nie umgewandelt werden soll.
Ich dank Euch für Eure Mühe die Ihr Euch macht!!!
Gruß
Elahmplo
Antwort 1 von JoeKe
Moin Elahmplo,
vieleicht hilft dir folgendes Beispiel:
Option Explicit
Private Sub CommandButton1_Click()
Dim ws As Integer
For ws = 2 To Worksheets.Count
If Sheets(ws).Range("C3") <> "" Then
Sheets(ws).PrintOut
End If
Next
End Sub
Gruß
JöKe
vieleicht hilft dir folgendes Beispiel:
Option Explicit
Private Sub CommandButton1_Click()
Dim ws As Integer
For ws = 2 To Worksheets.Count
If Sheets(ws).Range("C3") <> "" Then
Sheets(ws).PrintOut
End If
Next
End Sub
Gruß
JöKe
Antwort 2 von Elhamplo
Hallo JöKe
sorry, kam aber erst jetzt dazu den Code zu Testen. Danke!! Ist schon fast was ich gesucht habe.
Ich hab das Drucken mitr dem PDF Creator mit dem Makroaufzeichner aufgezeichnet und in den Code mit eingeführt. In Deinem Code habe ich mehrere PDF-Dateien. Ich möchte gerne das die Tabellenblätter wo C3 nicht leer ist in eine PDF Datei umwandeln. Kann man das irgendwie noch anpassen??
Vielen Dank für die Mühe!!
Gruß
Elhamplo
sorry, kam aber erst jetzt dazu den Code zu Testen. Danke!! Ist schon fast was ich gesucht habe.
Ich hab das Drucken mitr dem PDF Creator mit dem Makroaufzeichner aufgezeichnet und in den Code mit eingeführt. In Deinem Code habe ich mehrere PDF-Dateien. Ich möchte gerne das die Tabellenblätter wo C3 nicht leer ist in eine PDF Datei umwandeln. Kann man das irgendwie noch anpassen??
Vielen Dank für die Mühe!!
Gruß
Elhamplo
Antwort 3 von JoeKe
Moin Elhamplo,
ich denke schon, aber es wäre hilfreich, wenn du deinen jetzigen Code mal posten könntest.
Gruß
JöKe
ich denke schon, aber es wäre hilfreich, wenn du deinen jetzigen Code mal posten könntest.
Gruß
JöKe
Antwort 4 von Elhamplo
Hey JöKe
ist nicht die schönste Erweiterung:
Private Sub CommandButton1_Click()
Dim ws As Integer
For ws = 2 To Worksheets.Count
If Sheets(ws).Range("C3") <> "" Then
´Sheets(ws).PrintOut
Application.ActivePrinter = "PDFCreator auf Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"PDFCreator auf Ne02:", Collate:=True
End If
Next
End Sub
Danke!!!
Gruß
Elhamplo
ist nicht die schönste Erweiterung:
Private Sub CommandButton1_Click()
Dim ws As Integer
For ws = 2 To Worksheets.Count
If Sheets(ws).Range("C3") <> "" Then
´Sheets(ws).PrintOut
Application.ActivePrinter = "PDFCreator auf Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"PDFCreator auf Ne02:", Collate:=True
End If
Next
End Sub
Danke!!!
Gruß
Elhamplo
Antwort 5 von JoeKe
Hallo Elhamplo,
am einfachsten, denke ich, geht das über eine Hilfsdatei.
Option Explicit
Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String
Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
End Sub
Die betreffenden Blätter werden zunächst in eine neue Datei kopiert und diese wird dann mit dem PDF Creator "gedruckt". Du musst nut sicherstellen, das sich in der neuen Datei genügend Blätter befinden (Voreinstellung in Extras/Optionen).
Gruß
JöKe
am einfachsten, denke ich, geht das über eine Hilfsdatei.
Option Explicit
Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String
Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
ActiveWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
End Sub
Die betreffenden Blätter werden zunächst in eine neue Datei kopiert und diese wird dann mit dem PDF Creator "gedruckt". Du musst nut sicherstellen, das sich in der neuen Datei genügend Blätter befinden (Voreinstellung in Extras/Optionen).
Gruß
JöKe
Antwort 6 von Elhamplo
Hallo,
Funktioniert super, danke!! Noch eine Frage, kann man das auch umgehen mit der Voreinstellung der Blätter?? Den Code brauch ich für eine Datei mit 20 Blätter, dann hab ich nämlich jedesmal wenn ich Ecxel öffne 20 Tabellblätter.
Danke
Gruß
Elhamplo
Funktioniert super, danke!! Noch eine Frage, kann man das auch umgehen mit der Voreinstellung der Blätter?? Den Code brauch ich für eine Datei mit 20 Blätter, dann hab ich nämlich jedesmal wenn ich Ecxel öffne 20 Tabellblätter.
Danke
Gruß
Elhamplo
Antwort 7 von JoeKe
Hallo,
ja so:
Option Explicit
Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String
Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
Workbooks(Ziel).Sheets.Add after:=Worksheets(Worksheets.Count)
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
Workbooks(Ziel).PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
End Sub
Gruß
ja so:
Option Explicit
Sub Elhamplo()
Dim ws As Integer, i As Integer, Ziel As String, Quelle As String
Quelle = ActiveWorkbook.Name
Workbooks.Add
i = 1
For ws = 2 To Workbooks(Quelle).Worksheets.Count
Ziel = ActiveWorkbook.Name
Workbooks(Ziel).Sheets.Add after:=Worksheets(Worksheets.Count)
If Workbooks(Quelle).Sheets(ws).Range("C3") <> "" Then
Workbooks(Quelle).Sheets(ws).Cells.Copy _
Destination:=Workbooks(Ziel).Sheets(i).Range("a1")
i = i + 1
End If
Next
Application.ActivePrinter = "PDFCreator auf Ne02:"
Workbooks(Ziel).PrintOut Copies:=1, ActivePrinter:="PDFCreator auf Ne02:", _
Collate:=True
Application.DisplayAlerts = False
Workbooks(Ziel).Close
Application.DisplayAlerts = True
End Sub
Gruß
Antwort 8 von Elhamplo
Hallo,
Danke, danke, danke!!!! Super Sache!
Ich danke Die für die Mühe die Du Dir gemacht hast.
Große Verbeugung!!!!!
Gruß
Elhamplo
Danke, danke, danke!!!! Super Sache!
Ich danke Die für die Mühe die Du Dir gemacht hast.
Große Verbeugung!!!!!
Gruß
Elhamplo
Antwort 9 von JoeKe
Moin Elhamplo,
da nicht für. ;-)
Schönes Wochenende
JöKe
da nicht für. ;-)
Schönes Wochenende
JöKe

