Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Die Sache mit dem Punkt - with Sheets("XXX")

Die Sache mit dem Punkt - with Sheets("XXX")
07.03.2014 15:46:50
Peter
Guten Tag mit nachfolgende Code drucke ich mit diverse Teilbereiche aus der Tabelle "U_F" aus.
Nun möchte ich, dass nicht zwingend diese Tabelle aktiv sein muss, wenn ich diesen Code aufrufe.
Der Code läuft. Was mich jedoch irritiert ist, dass ich einen Fehler erhalte, wenn ich bei der Zeile
SonderzeichenEntfernen(.Cells(Range("Auswertung_Print_Area_" & Right ....
nebst vor Cell auch vor Range einn Punkt setze, da ja dieser Range in der Tabelle "U_F" zu finden ist.
Gruss, Peter
Sub AlleTA_pdf()
Dim pdfName As String
Dim pdfOpenAfterPublish As Boolean
Dim i As Long
With Sheets("U_F")
With .PageSetup
.PrintArea = Sheets("U_F").Range("_Auswertung_AT").Address
.Zoom = False
.Orientation = xlLandscape
.FitToPagesTall = False
.FitToPagesWide = 1
End With
pdfOpenAfterPublish = False
For i = 1 To 11 '' entspricht .Range("_Auswertung_Print_Area_01") bis .Range("_Auswertung_Print_Area_11")
'' bei zusätzlichen Bereichen (_12 ff) muss bei to 11 entsprechend angepasst werden
pdfName = ThisWorkbook.Path & "\" & "Zeitsaldi" & "_" & Format(Range("_bis"), "YYYYMMDD") & "_" & _
SonderzeichenEntfernen(.Cells(Range("_Auswertung_Print_Area_" & Right("0" & i, 2)).Row, 1).value) & ".pdf"
.Range("_Auswertung_Print_Area_" & Right("0" & i, 2)).ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
Next
With .PageSetup
.PrintArea = ""
End With
End With
End Sub
Public Function SonderzeichenEntfernen(strText As String) As String
''' Die Variable strSz enthält immer aufeinanderfolgend das Sonderzeichen und dann das  _
Ersatzzeichen.
Dim strSz   As String ' Sonderzeichen
Dim i       As Long
strSz = ",_._ _"
For i = 1 To Len(strSz) Step 2
strText = Replace(strText, Mid(strSz, i, 1), Mid(strSz, i + 1, 1))
Next
SonderzeichenEntfernen = strText
End Function

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Die Sache mit dem Punkt - with Sheets("XXX")
07.03.2014 16:58:14
fcs
Hallo Peter,
Ich hab dein Makro mal getestet. Wenn sich alle Namen auf dem Blatt "U_F" befinden dann geht es ohne Probleme.
Das Problemkind könnte auch Range("_bis") sein.
Hier die von mir getetstete Fassung. Ich hab die fortlaufende Zählung der Bereiche etwas geändert.
Right("0" & i, 2) kann man durch Format(i, "00") ersetzen
Gruß
Franz
Sub AlleTA_pdf()
Dim pdfName As String
Dim pdfOpenAfterPublish As Boolean
Dim i As Long
With Sheets("U_F")
With .PageSetup
.PrintArea = Sheets("U_F").Range("_Auswertung_AT").Address
.Zoom = False
.Orientation = xlLandscape
.FitToPagesTall = False
.FitToPagesWide = 1
End With
pdfOpenAfterPublish = False
For i = 1 To 11 '' entspricht .Range("_Auswertung_Print_Area_01") bis _
.Range("_Auswertung_Print_Area_11")
'' bei zusätzlichen Bereichen (_12 ff) muss bei to 11 entsprechend _
angepasst werden
pdfName = ThisWorkbook.Path & "\" & "Zeitsaldi" & "_" _
& Format(.Range("_bis"), "YYYYMMDD") & "_" & _
SonderzeichenEntfernen(.Cells(.Range("_Auswertung_Print_Area_" _
& Format(i, "00")).Row, 1).Value) & ".pdf"
.Range("_Auswertung_Print_Area_" & Format(i, "00")).ExportAsFixedFormat _
Type:=xlTypePDF, Filename:=pdfName, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
Next
With .PageSetup
.PrintArea = ""
End With
End With
End Sub

Anzeige
AW: Die Sache mit dem Punkt - with Sheets("XXX")
07.03.2014 17:22:48
Peter
Hallo Franz
Vielen Dank. So läuft es jetzt prima.
Deine Vermutung ist richtig: der Range"_bis") steht in der Tabelle "Cockpit".
Ich habe das daher im Code angepasst:
Format(Sheets("Cockpit").Range("_bis"), "YYYYMMDD") & "_" ...
Allerdings läuft der Code auch, wenn ich nur
Format(Range("_bis"), "YYYYMMDD") & "_" ...
schreibe. Dies ist wohl deshalb so, weil Range("_bis") nur eine Zelle umfasst.
Gruss, Peter

zwei Bemerkungen
07.03.2014 17:58:28
Erich
Hi Peter,
zu "wohl deshalb so, weil Range("_bis") nur eine Zelle umfasst":
Nein - mit der Größe des Bereichs hat das gar nichts zu tun.
Mit der Angabe des Namens _bis ist (weil es diesen Namen wohl nicht mehrfach in der Mappe gibt) klar,
auf welchem Blatt der Bereich liegt - "Cockpit". Man braucht dieses Blatt also nicht anzugeben.
Aber man darf natürlich auch kein anderes Blatt angeben, wie es hier geschähe:
With Sheets("xyz")
.Range("_bis")
End With
Das muss ja einen Fehler produzieren.
Zweite Bemerkung:
pdfOpenAfterPublish ist eine boolesche Variable, sie kann alsio die Werte True odeer False annehmen.
Wofür ist
IIf(pdfOpenAfterPublish, True, False)
gut? Warum nicht einfach
pdfOpenAfterPublish
Oft sieht man sogar so etwas wie
IIf(pdfOpenAfterPublish = True, True, False)
Also:
OpenAfterPublish:=pdfOpenAfterPublish
sollte ausreichen. :-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönes Wochenende allerseits!

Anzeige
AW: zwei Bemerkungen
07.03.2014 23:12:53
Peter
hallo Erich
Danke für deine Bemerkungen.
Alles rund um pdfOpenAfterPublish habe ich irgendwo im Netz gefunden. Ich habe mir nicht wirklich viel dazu überlegt.
Gruss, Peter

169 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige