Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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

Makro Seiten PDF Speichern

Makro Seiten PDF Speichern
15.08.2013 14:06:54
claus
Hallo,
im Tabellenblatt "Blatt 2" befindet sich in einer Spalte (ab Zelle J4) eine Liste mit folgenden Werte (untereinander).
"Wert A"
"Wert B"
"Wert C"
"-"
"-"
usw.
Ich möchte gerne per makro, dass der erste Wert der Spalte J (ab J4) der "-" ist(also Wert A) kopiert im Tabellenblatt "Blatt 1" in der Zeile A1, per Inhalte einfügen, einfügt wird und das danach das Tabellenblatt als PDF im Ordner C:\Temp gespeichert wird. Ist dies geschehen, soll das Makro das selbe mit dem nächsten Wert der "-" ist tätigen. Also in diesem Fall "Wert B". Danach mit dem nächsten "Wert C". Da der nächste Wert, in der Spalte, nach "Wert C", ein "-" Symbol ist, soll das Makro stoppen.
Also das Makro soll die Spalte von J4 bis J53 überprüfen und nach und nach die o.g. Funktion durchführen. Dies bis sich in der Spalte ein "-" befindet.
Vielen Dank!
VG
Claus

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Seiten PDF Speichern
16.08.2013 11:28:53
Klaus
Hallo Claus,
so sollte es gehen:
Option Explicit
Sub MakePDFs()
On Error GoTo hell
Const MyPath As String = "C:\Temp"
Const lSpalte As Long = 10
Const lAbZeile As Long = 4
Const BlattQuelle As String = "Blatt 2"
Const BlattZiel As String = "Blatt 1"
Const ZelleZiel As String = "A1"
Const strTerminiere As String = "-"
Dim lRow As Long
Dim r As Range
Dim MyName As String
Dim MyPDF As String
With Sheets(BlattQuelle)
lRow = 53
'Prüft bis Zeile 53 wie verlangt.
'lRow = .Cells(.Rows.Count, lSpalte).End(xlUp).Row
'Alternative: bis letzte beschriebene Zeile prüfen
'Jede Zelle durchgehen
For Each r In .Range(.Cells(lAbZeile, lSpalte), .Cells(lRow, lSpalte))
'Abbruchbedingung
If r.Value = strTerminiere Then
Exit For
Else
With Sheets(BlattZiel)
'Wert einsetzen
.Range(ZelleZiel).Value = r.Value
'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
Next r
End With
GoTo heaven:
hell:
'Fehler: warscheinlich ungültiges Zeichen im Dateiname.
MsgBox "Fehler!" & vbCrLf _
& "Fehlernummer: " & Err.Number & _
vbCrLf & "Fehlerbeschreibung: " & Err.Description
heaven:
End Sub
Blattnamen, Zellen, Pfad usw natürlich anpassen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Makro Seiten PDF Speichern
16.08.2013 14:14:27
claus
Funktioniert einwandfrei. VIELEN DANK!

Danke für die Rückmeldung! owT.
17.08.2013 00:00:51
Klaus
.

AW: Makro Seiten PDF Speichern
19.08.2013 17:52:38
claus
Hallo Klaus,
könntest du mir noch mit folgendem Problem helfen. Ich möchte beim o.g. Skript noch, dass vor der Speicherung alle Spalten bei denen die erste Zeile das Symbol "-" hat gelöscht werden. Diese Spalten müssen aber pro Speicherungsvorgang gelöscht werden (können nicht bei der ersten für alle restlichen Speicherungen gelöscht werden).
Für die Löschung habe ich bereits ein Skript:
Range("1:1").Replace "-", "#N/A", xlWhole
Rows(1).SpecialCells(xlCellTypeConstants, 16).EntireColumn.delete
Problem ist, dass ich nicht weiss wo ich diesen Skribt in deinem genau platzieren soll. Denn vor dem Speichern bringt es nichts, denn dann sind diese Spalten schon gelöscht und bei der zweiten Speicherung könnten es andere Spalten sein die gelöscht werden sollten. Mann müsste z.B. vor dem speichern das Tabelleblatt kopieren, die Spalten löschen, dann als PDF speichern und dann das kopierte Tabellenblatt wieder löschen. Dies würde aber die Speicherungszeit pro Datei deutlich erhöhen, weil meine Datei bereits sehr groß ist. Hast du eine Idee? Kannst du mir bitte helfen?
DANKE!

Anzeige
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.

Anzeige
AW: Makro Seiten PDF Speichern
20.08.2013 17:03:03
claus
Hallo Klaus,
vielen Dank!
Makro funktioniert soweit, einzige Problem ist, dass die Seiten die ausgeblendet werden als weisse Seite gedruckt werden. Kann man dies irgendwo einstellen?
Vielen Dank.
Viele Grüße
Claus

AW: Makro Seiten PDF Speichern
21.08.2013 07:25:04
Klaus
Hallo Claus,
es werden überhaupt keine "Seiten" ausgeblendet, sondern "Spalten". Sicher könnte man das irgendwie mit einer Boolean-Variable lösen, aber dafür kennt niemand deine Datei gut genug.
Vorschlag:
mache einen neuen Thread mit aussagefähigem Betreff und Musterdatei! Dieser Thread wird schon morgen ins Archiv wandern ...
Grüße,
Klaus M.vdT.

Anzeige
AW: Makro Seiten PDF Speichern
21.08.2013 14:04:06
claus
Danke für deine Antwort. Ja, sorry, habe mich vertippt. Das Thema ist nämlich, dass die Tabelle so formatiert ist, dass die Spalten die ausgeblendet werden genau eine Druckseite ist. So dass ich beim ausblenden der Spalten genau eine Seite ausblende. Also wenn ich diese Spalten ausblende wird mir eine leere Seite angezeigt. Leider kann ich die Datei nicht hochladen, da es sich um vertrauliche Daten handelt. Sorry. Wäre dir sehr dankbar wenn du mir auch so weiter helfen könntest. DankE!

AW: Makro Seiten PDF Speichern
21.08.2013 14:06:06
Klaus
Hallo Claus,
ohne Musterdatei kann / will ich dir nicht helfen.
Die Fleissarbeit, einmal eine Musterdatei ohne vertrauliche Daten zu produzieren, liegt aber bei dir (Namen gegen Max Mustermann tauschen, Zahlen gegen Zufallszahlen tauschen, Sachnummern gegen 1234A und 5678B tauschen ....)
Grüße,
Klaus M.vdT.

Anzeige
AW: Makro Seiten PDF Speichern
21.08.2013 14:24:02
claus
Ok, werde ich machen. Ich weiss auch schon wo das Problem liegt. Und zwar liegt es daran, dass ich die Seitenumbrüche manuell dargestellt habe. Ist aber wirklich blöd, dass Excel nicht genau das ausdruckt was angezeigt wird.

AW: Makro Seiten PDF Speichern
21.08.2013 14:32:50
claus
Hallo Klaus,
anbei findest du die Datei. Wenn du die Spalten CH bis CR ausblendest (seite 9) und dann auf drucken gehst wird die Seite 9 leer ausgedruckt.
https://www.herber.de/bbs/user/86962.xlsx
Danke!
VG
Claus

mir zu aufwendig ...
21.08.2013 14:53:36
Klaus
Hallo Claus,
Excel macht doch genau was es soll: du blendest alle Spalten aus Seite 9 aus, also wird als Seite 9 ein leeres Blatt gedruckt. Da du eigene Seitenumbrüche hast, hat Excel keine Chance selbstständig auf Seite 10 zu springen.
Workaround: die manuellen Seitenumbrüche löschen und per VBA setzen. Da ich damit selbst nicht arbeite, müsste ich mich da erst lange mit beschäftigen. Ich lass den Beitrag mal offen - denk aber daran, morgen geht er bereits ins Archiv.
Grüße und viel Erfolg,
Klaus
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige