328 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Morgen,

ich habe da eine Herrausforderung, für die ich eine Lösung suche. In einem Excel workbook, werden Werte mehr oder weniger automatisiert berechnet. Auf dem Tabellenblatt 1 werden die Ergebnisse dann dargestellt.
Ich möchte nun diese Vorgang automatisieren, da dieser zwischen 1000 und 5000 mal/Monat wiederholt werden muss. Schwierigkeit ist, das das Tabellenblatt1 jedesmal nach einer Berechnung als pdf gespeichert werden muss.
Auf Tabellenblatt 2 erzeuge ich eine Liste von Nr. in Spalte C, da die eigentliche Liste in Splate B dupplikate enthält lasse ich diese per Makro in Spalte C ausfiltern/löschen. Der Speicherort und der Filename wird ebenfalls bereits automatisiert erstellt.
Ich benötige jetzt eigentlich nur noch eine Lösung um die aufbereitete Spalte C nacheinander in Tabellenblatt A in Zelle F5 zu kopieren und das Ergebniss nach 1 Sekunde als pdf-File zu speichern.

Hat jemand eine Idee, wie das funktioniert und kann mir helfen?

Danke

2 Antworten

0 Punkte
Beantwortet von flupo Profi (17.8k Punkte)
Das schreit nach einer Programmschleife.
Ich nutze für solche Sachen gern den Makrorecorder und zeichne mir
damit einen vollständigen Durchgang auf.
Den erstellten Code kann man dann entsprechend anpassen und per
For- oder While-Schleife immer wieder ablaufen lassen.
Damit das funktioniert, müssen die zu nutzenden Zellbereiche zählbar
adressiert sein so dass die Bereiche mit einer Zählvariable der Schleife
gefunden werden können.

Gruß Flupo
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

hier mal ein Beispiel wie das aussehen könnte:

Sub kopieren()

Dim lngLetzte As Long
Dim lngZeile As Long
Dim strSpeicherpfad As String
Dim strDateiname As String

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Pfad für zu speichernde PDF's festlegen
strSpeicherpfad = "C:\Test\"

'Speicherpfad überprüfen, ob letztes Zeichen Backslash ist
If Right(strSpeicherpfad, 1) <> "\" Then strSpeicherpfad = strSpeicherpfad & "\"

'letzte beschriebene Zeile ermitteln in Spalte C ermitteln
lngLetzte = ThisWorkbook.Worksheets("Tabelle2").Cells(Rows.Count, 3).End(xlUp).Row

For lngZeile = 1 To lngLetzte
With ThisWorkbook.Worksheets("TabelleA")
'Wert aus Spalte C in F5 kopieren
.Range("F5") = ThisWorkbook.Worksheets("Tabelle2").Cells(lngZeile, 3)
'Name für PDF-Datei festlegen
strDateiname = strSpeicherpfad & "TabelleA_" & lngZeile & ".pdf"
'Blatt als PDF exportieren
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
strDateiname, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, ignoreprintareas:=False, _
openafterpublish:=True
End With
Next lngZeile

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Den Namen der Tabelle, sowie der Pfad und der Name, unter dem die PDF's gespeichert werden sollen, musst du natürlich auf deine Verhältnisse anpassen.

Gruß

M.O.
...