AW: Makro Seiten PDF Speichern
20.08.2013 08:22:12
Klaus
Hallo Claus,
das gehört das zwischen "Wert einsetzen" und "PDF erstellen".
Ich bezweifele aber, dass dein Script das richtige ist. Wie entstehen denn die "-" in Zeile 1? Entstehen sie per Formel, dann zerschießt das "Replace-and-Delete" natürlich alles. Stehen sie bereits fix in den Zellen, gibt es keinen Grund dass pro Vorgang zu machen ... denn dann ändert sich ja nichts :-)
Nach jedem Vorgang zu kopieren halte ich aus Zeitgründen für die falsche Lösung.
Mein Vorschlag: Überprüfe Zeile 1 auf "-" und blende die Spalten aus. In der PDF macht es keinen Unterschied, ob die Spalten gelöscht oder ausgeblendet waren!
Also im Prinzip so: (ungetestet mangels Musterdatei)
[...]
Else
With Sheets(BlattZiel)
'Wert einsetzen
.Range(ZelleZiel).Value = r.Value
'Spalten mit "-" in Zeile 1 ausblenden
.Cells.EntireColumn.Hidden = False
Dim lCol As Long
Dim rCols As Range
Dim rHide As Range
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For Each rCols In .Range(.Cells(1, 1), .Cells(1, lCol))
If rCols.Value = "-" Then
If rHide Is Nothing Then
Set rHide = rCols
Else
Set rHide = Union(rHide, rCols)
End If
End If
Next rCols
If Not rHide Is Nothing Then rHide.EntireColumn.Hidden = True
'Dateiname der fraglichen PDF definieren
MyName = "DerDateiname_" & r.Value
MyPDF = MyPath & IIf(VBA.Right(MyPath, 1) = "\", "", "\") & MyName & ".pdf"
'PDF exportieren
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=MyPDF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End With
End If
[...]
Die DIMs kannst du gerne nach oben verschieben, wo sie hingehören. Mit
Application.Screenupdating = False
am Anfang des Makros holst du nochmal mehr Geschwindigkeit raus, aber
Application.Screenupdating = True in der Fehlerbehandlung (direkt unter hell:) nicht vergessen!
Grüße,
Klaus M.vdT.