Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA / Excel Dateien samt Blätter in .pdf umwandeln

VBA / Excel Dateien samt Blätter in .pdf umwandeln
08.11.2024 15:10:54
blackonaut
Hallo zusammen,

ich habe 3 Exceldateien (Abrechnung, Forecast u. Forecast_PM) mit jeweils 17 Tabellenblättern.

Die Dateien befinden sich im selben Ordner.

Bis jetzt habe ich in jeder einzelnen Datei ein Makro eingefügt und ausgeführt um die .PDFs zu erstellen.

Meine Frage wäre, kann ich eine Excel-VBA-Datei erstellen in der diese 3 Dateien angesprochen werden, um hier in einem Zuge die .PDFs erstellen zu können?

Die PDF sollte als Namen den Namen des jeweiligen Tabellenblatts und der Datei haben (119_Abrechnung.pdf; 119_Forecast.pdf; 119_Forecast_PM.pdf)

Suche nach einer VBA Lösung falls möglich :-)


Im Voraus vielen Dank an die Experten
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA / Excel Dateien samt Blätter in .pdf umwandeln
08.11.2024 17:44:51
Marc
Ja das kannst du,

die musst dafür die Dateinamen der jeweiligen Exceldatei mit in die Programmierung einpflegen..

Mit
workbooks.open "C:\Beispiel\DieDatei.xls

die Datei öffnen , dann kannst du darauf zugreifen bzw diese dann entsprechend bearbeiten und exportieren.
AW: VBA / Excel Dateien samt Blätter in .pdf umwandeln
11.11.2024 08:51:43
blackonaut
Hallo Marc,

Danke für deine Rückmeldung.

Ich habe es zwar geschafft über workbooks.open "C:\Beispiel\DieDatei.xls die Dateien öffnen zu können.
Leider fehlt mir aber die Programierhintergrund, wie ich im Folgenden dann noch die Dateien als .PDF abspeichern kann.

Hier wäre mir wichtig, dass der Dateiname sich aus dem Namen der Datei sowie des Namens des Tabs (hier heißt das jeweilige TAB z.B. 119) zusammensetzt,
als Bsp. 119_Abrechnung.pdf 119_Forecast.pdf; 119_Forecast_PM.pdf

Vorab Danke und Grüße
Anzeige
AW: VBA / Excel Dateien samt Blätter in .pdf umwandeln
11.11.2024 11:07:39
daniel
Hi
lege eine neue Exceldatei an
schreibe die Namen der Dateien, aus denen die PDFs erstellt werden sollen, in die Spalte A des ersten Tabellenblatts

füge dieses Makro in die Datei ein:
Sub PDF_Erstellen()

Dim Datei1, Datei2
Dim wb As Workbook
Dim sh As Worksheet

For Each Datei1 In ThisWorkbook.Sheets(1).Columns(1).SpecialCells(xlCellTypeConstants).Cells
Datei2 = Dir(ThisWorkbook.Path & "\" & Datei1 & ".xl*")
If Datei2 > "" Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & Datei2, ReadOnly:=True)
For Each sh In wb.Worksheets
sh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & sh.Name & "-" & Datei1, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Next
wb.Close False
End If
Next

End Sub

speichere dieses Exceldatei in dem Verzeichnis, in dem auch die umzuwandelnden Exceldateien liegen.

um jetzt die PDFs zu erstellen öffnest du dann diese Datei und startest das Makro.

Gruß Daniel
Anzeige
AW: VBA / Excel Dateien samt Blätter in .pdf umwandeln
11.11.2024 14:56:31
blackonaut
Hi Daniel,

besten Dank für deine Rückmeldung.

Ich habe dein Beispiel ausprobiert, aber so recht passiert nichts bei mir wenn ich das Makro mit F5 auslösen möchte.

Habe eine JPG hochgeladen, hoffe es hilft weiter und ich habe nur etwas falsch aufgebaut.

Danke für die Hilfe

Grüße



Userbild
Anzeige
Ein relativ einfacher Ansatz wäre die Kamerafunktion ...
08.11.2024 18:53:24
Udo D
.. an den vermtul. die wenigsten hier daran denken würden / ich gebe zu das ist schon arg quer gedacht, sollte aber funktionieren !

Hallo Blackonaut ... ihr habt Namen 😎,

In Excel gibt es die Kamerafunktion, je nach Excelversion war die früher mal noch recht einfach aufgesetzt, heute
bei den neueren Excel Vers. funktioniert Sie nur noch über das dazu vorherrschende Icon - einem Kamerasymbol.

Wenn du Excel in seiner Standartansicht nach dem Installieren fährst, so musst du dir (in 365) dieses Symbol / also
das Tool mit der ihr angedachten Funktion erst mal irgendwo zu deinen Werkzeugreitern oben dazupacken.
Wenn ich mich nicht ganz arg täusche ist dies in den Standartreitern nirgends reingepackt / kann mich auch täuschen.
Die Funktion ist aber abgreifbar, dazu musst du ggf. über die Grundeinstellungen ( Register DATEI ganz links, runter zu OPTIONEN )
In den links gelisteten Einstiegsbereichen "Menüband anpassen" wählst du linkerseits in dem Vorgabefeld oben "Alle Funktionen",
nun werden dort darunter sämtliche Werkzeuge & Funktionen gelistet, alphabethisch ... spring oder scroll runter bis "K..." und dann
sollte "Kamera" kommen mit einem enstpr. Kamerasymbol, dieses klickst du an dannist Sie dort szs. markiert, nun wählst du rechts im
Feld noch ein Register aus, in welches du diese Funktion mit hineinfügen möchtest ... anschl. noch den hinzufügen Schalter in der Mitte
anklicken und dann sollte das Kamerasymbol diesem Register hinzugefügt werden.
Soweit mal zur Vorarbeit - wenn du es noch nicht greifbar hattest. Dann schließt du das Einstellungsfenster und die Kamera sollte in dem
Register deiner Wahl darin enthalten sein und wäre demnach auch sofort anwendbar.

Wie funktioniert mein Ansatz also nun :
Die Kamerafunktion funktioniert nicht nur in deiner eigentlichen Datei die du gerade geöffnet hast, sondern Sie funktioniert auch
bereichsübergreifend mit anderen Dateien ( sogar wenn diese glaub nicht geöffnet sind ) der über den Verweis den du dann auslöst verwiesene
Pfad muss dann für diese Funktion eigentl. nur auf deinem Rechner in Bereichen zu denen du berechtigt bist sich befinden.
Da du geschrieben hast dass alles im gleichen Ordner liegt .. umso besser.

Wie gehst du nun vor :
an einem PDF Blatt erklärt - du kannst es anschl x-beliebig viel vervielfachen.

Angenommen du richtest dir eine Exceldatei her, in der du nur exportierst, Dann erstes TAB-Blatt wäre PDF 1 , zweites TAB PDF 2 usw..
Richte dir in TAB1 (PDF1) einen Zellbereich so ein als Druckbereich , dass er deinem Export entspricht, diese Zellen kannst du ruhig farblich alle
gleich einfärben zur optischen Orientierung für das was jetzt gleich kommt, anschl. kannst du Sie wieder weiseln.
Nun öffnest du deine tatsächliche Exceldatei wo der Inhalt drin ist den du immer exportierst, wähle einen Zellbereich aus von oben links bis unten rechts
der ebenfalls deinem Exportformat entspricht von der Größe her, so in etwa, kannst du nachher noch feintunen. Wenn du diesen ausgewählt hast
klickst du nun auf die Kamera-Funktion ... jetzt sollte der Bereich deiner Auswahl mit so einem laufenden Rand aktiv sein (wie beim kopieren), damit weis Excel nun
dass dies dein Ausgangsbereich ist ... und nun wechselst du in deine andere Exceldatei, dort auf das vorbereitete Tabellenblatt Tab 1 (PDF1) und dann sollte
dein Cursor schon nicht mehr einem Pfeil entsprechen sondern einem dünnen Kreuz / da du ja noch in der laufenden Kamerafunktion drin bist, (und solange du nicht ausversehen irgendwas anderes zwischendurch angeklickt hast !), also du sihst das Kreuz als Cursor, fahre einfach mal oben links in den Bereich den du Zellfarben etwas anders eingefärbt hast und beginne dort (nicht jetzt eine Zelle mit Doppelklick anklicken, sondern damit ) die linke Maustaste gedrückt zu halten und deine MAus
etwas nach rechts unten zu ziehen (das muss nicht exakt den vorgegebenen farbigen Zelle entsprechen im ersten Schritt !

Excel macht jetzt folgendes, durch das von dir dort reingezogene / erstellte "Grafikfenster" eine Art über den Zellen schwebende Autoform, hast du nun szs. eine
Live-Vorschau also wie ein Kamera-Livebild dieser anderen Exceldatei und dem vor Klicken der Kamerafunktion entsprechendem Zellverband den du dort zuvor
ausgewählt hattest ! Das ist schon mal nicht schlecht bis dahin !

Nun das Feintuning :
nimm diese Autoform ( du kannst Sie anklicken und verschieben wie jede andere Autoform auch), klcik Sie an, dann erscheinen diese Punkte aussenrum zum Skalieren usw.
und sobald du Sie angeklickt hast sollte auch oben in deiner Formelzeile der diesem Bild zugewiesene Dateipfad einzusehen sein ... dies nur nebenbei, du kannst also diese
Bilddatei ( welche also eine deiner eigentlichen Ausgangsdateien nur widerspiegelt / die Ausgangsdatei bleibt davon völlig unberührt ), bzw. dieses Vorschaufenster oder
Kopiefenster , nenn es wie du willst ... jedenfalls nun noch zurecht rücken. Wenn ich mich nicht ganz arg täusche sollte sich dieses Bild beim Abschließen der Funktion, das geschieht automatisch wenn du beim Einfügen dieses Fenster mit dem Kreuz-Cursor von links oben nach rechts unten ( linke MT gedrückt ! ) fährst und dann irgendwann loslässt, dann ist die Funktion abgeschlossen und eine Sek später erscheint ja diese Bildkopie des Ausgangsbereiches. Eben nach diesem autom. Beenden der Funkt. sollte das somit eingefügte Bild eigentlich schon automatisch die Größe haben wie der Zellbereich den du als Basis in deiner Ausgangsdatei ausgewählt hattest. Also nimm nun einfach diese schwebende Autoform ( deine Bildkopie ) und verschiebe Sie nun z.B ganz nach oben links in die Ecke, wenn da dein dort eingerichteter Druckbereich für den Export als PDF usw. deiner Vorgabe entspricht. Wie gesagt dies kannst du frei verschieben usw. oder auch verzerren, spiel mal damit rum ...

Grundsätzlich :
ist also dieser Bildinhalt dieses sagen wir Bildschirm- oder Kamerakopie über die verlinkte Adressangabe dessen mit deiner Ausgangsdatei verlinkt.
Das hat den großen Vorteil, dass du dieses Einrichten nur ein einziges Mal machen musst. Du kannst dir hier in deiner Sammelmappe also zB all deine Exceldateien, deren jew. TAB so in deiner Sammelmappe wie hier beschrieben in jew. einen eigenen TAB spiegeln, du könntest Sie aber auch alle im gleichen TAB reinziehen und untereinander anordnen usw.

jedenfalls : der ganz große Vorteil bei dieser Variante ist der, dass sobald du Werte oder Einträge vornimmst in deinen einzelnen Basisdateien welche alle ja im gleichen Ordner liegen wie deine neue Sammelmappe zu Exportieren, dann wird diese Änderung sofort dort in der Sammelmappe auch zu sehen sein, wie ein Livebild, ein Krucks hat es aber um optisch eine Änderung in einer deiner Basismappen in der Sammelmappe zu erfassen (damit die es szs mitzubekommt) muss lediglich die Sammelmappe geöffnet sein ! Deine Basismappen kannst du nach und nach bearbeiten danach speichern und wieder schließen, solange nebenher die Sammelmappe wo alle verlinkten Bilder drinn sind, solng diese zeitgleich geöffnet ist /war, nimmt diese jeder Änderung in irgendeiner Basis war und spiegelt dies dort, Schließt du dann irgendeine Basismappe, bleibt in der Sammelmappe immer der letzte Stand zu sehen obwohl die jew. Basismappe geschlossen ist.

Das wäre mal ein ohne viel Makroanweisungen szs. manuelle Möglichkeit wie du das im Prinzip elegant lösen könntest.
Ich selbst habe dies in versch. Anwendungen ebenfalls mal aktiv, aber auch nicht so dass ich jetzt z.B. hunderte verlinkte Bilder da wo sammel, ob es da dann
irgendwann Probleme gäbe wegen zB Speicherlast oder so, keine Ahnung.

Sollte dies der Falls sein, dann zeichne doch einfach solch eine Bildeinrichtung komplett auf mit dem Makrorekorder und führe dies vor dem je Export kurzerhand aus
dann machst dies für alle und könntest somit alles bündeln usw. Da haste ja dann viele Wege zum Umsetzen und wie dein du deine Prozeße hierzu gestalten / Aufbauen willst. Auf jeden Fall eine praktikable Lösung zunächst ohne Makros !

Wie gesagt, du kannst natürlich auch per VBA alles rüberziehen oder entspr. exportieren usw. is aber eine ganz andere Nr. und ein ganz anderer Lösungsweg, dies hier
wäre der Ansatz über die "Kamera" - viel Spass damit

LG udo

Anzeige
AW: Ein relativ einfacher Ansatz wäre die Kamerafunktion ...
11.11.2024 08:41:29
blackonaut
Hallo udo,

vielen Dank für deine Mühe die du in deine Antgwort gesteckt hast.

Die Kamerafunktion hatte ich in der Tat nicht auf dem Radar, deinen Ansatz hatte ich am Wochenende ausprobiert.

Ich konnte so eine Exceldatei erstellen, in der ich dank der Kamerafunktion die Einzeltabs meiner 3 Exceldateien in einem Tab in der neuen Excel ablegen konnte.

So weit so gut.

Was du nicht wissen konntest ist, dass sich in den Exceldateien Abrechnungsdaten befinden, dass heißt in einem Monat können es mal 50 Einträge sein, im nächsten mehr oder weniger.

Soweit ich recherchiert habe, kann die Kamerafunktion aber nicht dynamisch eingesetzt werden. Habe ich das richtig verstanden oder gäbe es hier evtl. auch eine Lösung?

Viele Grüße
Anzeige
AW: Ein relativ einfacher Ansatz wäre die Kamerafunktion ...
11.11.2024 23:35:01
Udo D
Hi Blackonauti ;-)

aaaalso das kommt nach meinen Kenntnissen darauf an in welcher Excel Version du dies verwendest, in den früheren Excel's .. glaub so bis 2019
zumind. meine 2019er kann es, die 365er im Gesch. kanns nicht mehr ... und zwar die viel vereinfachtere Version dieses Kameratricks.

Das ging früher so - versuch mich kurz zu fassen - du hattest irgendein Bild reingeladen über die Bild einfügen Funktion. Dies war dann auch eine
Autoform aber eine szs. Grafik-wiedergebende AF. Dabei unwichtig was der Bildinhalt war oder zunächst ist den du auswählst. Für Excel war das eine
im Prinzip neutrale Bildgrafik deren Inhalt eben darauf beruhte dessen Pfad und Dateinamen den du reingeladen hattest. der Kluuh dabei war, dass du diese
Bildfläche nun richtig pimpen konntest. Ein kurzes Beispiel dazu.
Du hast also so eine Grafik reingeladen, dann wählst du diese Autoform an (es erscheinen diese Verzerrpunkte ringsum) und während du die AF noch gewählt belässt klickst du nun oben in die Adressleiste und beginnst typisch eine Formel mit ISTGLEICH Zeichen, danach wählst du deinen Zellenbereich aus , den du szs. in diesem Bild darstellen lassen willst, ähnlich wie mit der Kamerafunktion egal welche Tab. ob in der Exceldatei oder einer anderen ... es wird dann das angezeigt anschl. was du nach dem ISTGLEICH dann auswählst und mit Return bestätigst.
Und genau das Prozedere lies sich mit dem Makrorekorder aufzeichnen, du konntest dann im Code alles möglich beeinflussen, Namen vergeben, den Bereich zB. dynamisch
angeben, in dem du die Formel in der Adressleiste über deinen Makrocode variiert hattest, usw. da gabs echt sehr viele Möglichkeiten der Anwendung hierzu
ich liebte es, aber leider - warum auch immer ist diese ursprüngliche Art des Bildverlinken wie eine krasse Livecam die man eben auch variabel ansprechen konnte mit dem neuen Excel 365 so nicht mehr möglich, die Kamerafunktion im Neuen Excel ist für mich ein fauler Kompromis - wenn ich das so sagen darf, soll nicht böse klingen
aber die alte Version / Möglichkeit war tausend mal cooler & einfacher !
Wenn du bei der verlinkten Adresse unter der Kamerafunktion dann versuchst dann in der Adressleiste den automatisierten Adressbezug händisch zu beeinflußen meckert Excel gleich rum, sehr sehr schade eigentlich, aber es sind die allerwenigsten die diesen Trick wohl überhaupt kennen, evtl. ist dies nicht genug Motivation für MS dies wieder zu verbessern oder so ?
LG Udo
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige