Registriert seit: 14.04.2024
Version(en): 2016
Ich habe eine Datei mit mehren Sheets, bestimmte Sheets (nicht alle) soll ein PDF Dokument erstellt werden und am besten gleich dort abgespeichert werden wo die Excel-Datei liegt.
Und der Name des Dokuments soll dann aus "B2" und "B4" ausgelesen werden, Optional aktuelles Datum.
Hier mein Code... der nicht wirklich funktioniert ....
Sub PDFerzeugen()
Dim strName As String
Dim ws As Worksheet
strName = Range("B7")
For Each ws In Worksheets
ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
strName & ws.Name, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Next ws
End Sub
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
ich weiss nicht ob ich dir richtig weiterhelfen kann, probieren wir es mal gemeinsam.
Bei strName fehlt der Tabellenname vor Range("B7"), damit wird der Wert aus dem gerade aktivem Sheet genommen.
Mit strName & ws.Name verbindest du den strName mit dem Namen des Sheet. Du willst ihn aber aus B2 + B4 auslesen!
Ich empfehle dir diese Werte vorher in eine Variable zu laden, z.B. Datei As String deklariert.
Datei = ws.Range("B2") & ws.Range("B4"). Ich weiss aber nicht was in den Zellen drinsteht!
Dann könnte es so aussehen: Filename:=strName & Datei, wobei du das "\" Zeichen nicht vergessen darfst!
Den Filename kannst du ggf. vorher mit einer MsgBox prüfen, ob es ein gültiger Dateiname mit gültigem Pfad ist.
MsgBox = strName & Datei
mfg Gast 123
26865
Nicht registrierter Gast
Registriert seit: 14.04.2024
Version(en): 2016
15.04.2024, 21:03
(Dieser Beitrag wurde zuletzt bearbeitet: 15.04.2024, 21:30 von baemir23.)
Abend.. ich bin Anfänger mit Makros ... Formeln sind kein Problem ...
Kannst du mir den Code teil schicken den ich anpassen muss.
Habe ein Code gefunden der ganz gut funktioniert:
Nur ich möchte nicht das alle Sheets ein PDF erstellt werden nur bestimmte ? Jemand eine Idee? Was man ändern muss?
Option Explicit
Public Sub CreatePDF()
Dim strDateiName As String
Dim strDateiPfad As String
Dim fDateinameTemp As Variant
Dim wsCurrent As Worksheet
strDateiPfad = ThisWorkbook.Path & Application.PathSeparator
fDateinameTemp = Split(ThisWorkbook.Name, ".")
fDateinameTemp(UBound(fDateinameTemp)) = "pdf"
strDateiName = Join(fDateinameTemp, ".")
'Komplette Datei sichern
Call ThisWorkbook.ExportAsFixedFormat( _
Type:=xlTypePDF, _
Filename:=strDateiPfad & strDateiName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True)
'Einzelne Blätter sichern
For Each wsCurrent In ThisWorkbook.Worksheets
If wsCurrent.Visible = xlSheetVisible Then
strDateiName = wsCurrent.Name & ".pdf"
Call wsCurrent.ExportAsFixedFormat( _
Type:=xlTypePDF, _
Filename:=strDateiPfad & Range("B4") & strDateiName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True)
End If
Next
End Sub
26865
Nicht registrierter Gast
(15.04.2024, 21:03)baemir23 schrieb: Habe ein Code gefunden der ganz gut funktioniert:
Deswegen habe ich den ja auch verlinkt…
Du siehst, dass auch mein Code nicht alle Blätter druckt, sondern nur die, die eine Bedingung erfüllen. Diese kannst du durch deine Bedingung ersetzen. Wenn du das nicht hinbekommst, beschreibe, woran man die „bestimmten“ Blätter erkennt.
Registriert seit: 14.04.2024
Version(en): 2016
15.04.2024, 22:30
(Dieser Beitrag wurde zuletzt bearbeitet: 15.04.2024, 22:31 von baemir23.)
Die Tabellenblätter haben alle unterschiedliche Namen, das einzige was in jeden Tabellenblatt gleich ist, die als PDF gespeichertwerden sollen ist die Spalte "B4" in dieser steht immer Abrechnung Sonderleistung/leistungen ...
Ich hoffe das hilft dir weiter ...
Was ist den die Bedingung in deine Code ?
26865
Nicht registrierter Gast
Code:
If wsCurrent.Visible = xlSheetVisible Then
Ersetzen durch
Code:
If wsCurrent.Range("B4").Value = "Abrechnung Sonderleistung/leistungen" Then
Registriert seit: 14.04.2024
Version(en): 2016
hey... habe ich probiert, hat leider nicht funktioniert .... jetzt bekomme ich nur noch eine großes PDF Dokument, und mit noch allen Tabellenblättern ..
26865
Nicht registrierter Gast
Selbstverständlich. Das bekamst du vorher aber auch schon, ohne dass es dir auffiel - ordentlich getestet und beschäftigt hast du dich damit also nicht. Das entspricht nämlich dem Wunsch im verlinkten Thread, den du ja gelesen hast. Und wenn du die zugehörenden Codezeilen löscht, könntest du das „Problem“ sehr einfach selbst lösen.
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
bitte den Code von EarlFred hinter den 1. IF Befehl setzen. Man achte bitte auf die genauen Details!
Hinter dem Textzeichen "/" fehlt ein
"-" vor "-leistungen". Bitte nicht fragen woher ich das weiss.
Das zweite End If bitte nicht vergessen! Wenn das der Fehler war sollte das PDF drucken klappen.
Code:
If wsCurrent.Visible = xlSheetVisible Then
If wsCurrent.Range("B4").Value = "Abrechnung Sonderleistung/-leistungen" Then
mfg Gast 123