Microsoft Excel

Herbers Excel/VBA-Archiv

Dynamischer Pfad & Dateiname im Makro

Betrifft: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 01.11.2012 14:24:13

Hallo zusammen...
mit der Makroschleife von Tino bin ich schonmal arg weitergekommen. Nochmals herzlichen DANK! :-) Jetzt hätte ich noch ein Nice-to-Have, dass ich gerne umsetzen würde:

Und zwar würde ich die Rechnung jeweils gerne als PDF abspeichern; der Code würde so aussehen:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Daten\Vereinsdaten Rechnung.pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, _
OpenAfterPublish:=True

Kann ich den Pfad, als auch den Dateinamen irgendwie aus dem Excelfile auslesen und oben in den Code übernehmen?

Der Pfad steht in der Zelle K1 und der zu generierende Dateinamen wird in in K2 errechnet.

Das in die Schleife einbauen würde ich hinbekommen, aber bezüglich der Variablen stehe ich etwas auf dem Schlauch...:-(

Vielen lieben Dank und Gruss
Nik

  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: {Boris}
Geschrieben am: 01.11.2012 14:27:57

Hi,

ungetestet:

Const sPfad As String = "C:\Daten"
Const sName As String = "Vereinsdaten Rechnung.pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
sPfad & "\" & sName, Quality:=xlQualityStandard _
, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, _
OpenAfterPublish:=True

Die Variablen sPfad und sName dann natürlich nicht konstant, sondern via Zellbezug befüllen.

VG, Boris


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 01.11.2012 15:28:23

Hallo Boris,

ich stehe noch etwas auf dem Schlauch...hab eine Fehlermeldung grad in der ersten Zeile mit dem spfad, den er sich aus der Zelle K1 lesen soll...

Const sPfad As String = Range("K1")
Const sName As String = Range("K2")
Dim n&, nn&, MerkWert


With Application
.ScreenUpdating = False
.EnableEvents = False

With Worksheets("Rechnung")
nn = Range(.Shapes("Listenfeld 3").DrawingObject.ListFillRange).Rows.Count
MerkWert = .Range("O1").Value
End With

For n = 1 To nn
Worksheets("Rechnung").Range("O1") = n

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
sPfad & "\" & sName, Quality:=xlQualityStandard _
, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, _
OpenAfterPublish:=True

Next n
End With

Worksheets("Rechnung").Range("O1").Value = MerkWert

.EnableEvents = True
.ScreenUpdating = True
End With

End Sub

Könntest Du mal kurz draufschauen? Vielen lieben Dank und Gruss
Nik


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: {Boris}
Geschrieben am: 01.11.2012 16:03:37

Hi,

Const sPfad As String = Range("K1")
Const sName As String = Range("K2")


Eine Konstante ist eben eine Konstante. Das hatte ich nur der Einfachheit halber so gepostet.
Mit den Zellzuweisungen musst Du die Variablen "normal" deklarieren und dann entsprechen so zuweisen:

Dim sPfad As String
Dim sName As String
sPfad = Range("K1")
sName = Range("K2")

VG, Boris


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 02.11.2012 09:05:44

Schönen guten Morgen zusammen,

gestern hatten mir Tino und Boris hilfreich unter die Arme gegriffen, aber irgendwie schnalle ich es nicht so wirklich... Der folgende Code, der eigentlich zig PDF`S (Pfad und Dateinamen soll jeweils aus K1 und K2 gelesen werden) abspeichern soll macht zwar was, aber es ist nur das PDF der letzten Person im Dropdown abgespeichert. Eine Fehlermeldung erfolgt nicht, aber der Ordner enthält jeweils nur das eine PDF der letzten Person des Dropdowns...:-(

Sub PDF()

Dim sPfad As String
Dim sName As String
 sPfad = Range("K1")
 sName = Range("K2")

Dim n&, nn&, MerkWert
 
 
With Application
    .ScreenUpdating = False
    .EnableEvents = False

With Worksheets("Rechnung")
        nn = Range(.Shapes("Listenfeld 3").DrawingObject.ListFillRange).Rows.Count
        MerkWert = .Range("O1").Value
    End With

For n = 1 To nn
            Worksheets("Rechnung").Range("O1") = n

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
 sPfad & "\" & sName, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        From:=1, To:=1, OpenAfterPublish:=False
    

Next n
    End With
    
    Worksheets("Rechnung").Range("O1").Value = MerkWert
With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With

End Sub

Seht ihr spontan einen Fehler?

Vielen lieben Dank und Gruss
Nik


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: {Boris}
Geschrieben am: 02.11.2012 10:37:08

Hi Nik,

Seht ihr spontan einen Fehler?

Natürlich. Zu Beginn weist Du den Variablen sPfad und sName den Inhalt der Zellen K1 bzw. K2 zu - und diesen Inhalt behalten die Variablen bis zum Ende des Makros (und somit natürlich auch in Deiner Schleife, die damit permanent die selbe PDF-Datei erzeugt).
Aber mangels genauerer Kenntnis Deines Dateiaufbaus kann ich nicht mehr dazu sagen.

VG, Boris


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 02.11.2012 11:30:00

Hallo Boris,

vielen lieben Dank für Dein Feedback! Folgendes:
In der Zelle K1 ist der Pfad hinterlegt, der für alle Vereinsrechnungen gleich bleibt, sprich hierher sollen alle Vereinsrechnungen abgespeichert werden.
In der Zelle K2 errechne in einer Formel den Dateinamen, sprich Jahresrechnung & Name.

In der Zelle O1 wird der Wert des Dropdowns wiedergegeben, sprich wenn im Dropdown/ Listenfeld der 2. Name ausgewählt ist steht in der Zelle O1 der Wert 2.

Mit folgendem Code:

With Worksheets("Rechnung")
nn = Range(.Shapes("Listenfeld 3").DrawingObject.ListFillRange).Rows.Count
MerkWert = .Range("O1").Value
End With

sollen erstmal die Anzahl von Einträgen im Dropdown ausgelesen werden und die Schleife eben dementsprechend oft ablaufen lassen. Aber eben, er speichert mir immer nur den letzten Eintrag :-( Und ich schnall nicht warum...

Ist das ein wenig verständlicher erklärt? Vielen lieben Dank!

Gruss
Nik


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 02.11.2012 13:58:43

Hallo Boris,

vielen lieben Dank für Dein Feedback! Folgendes:
In der Zelle K1 ist der Pfad hinterlegt, der für alle Vereinsrechnungen gleich bleibt, sprich hierher sollen alle Vereinsrechnungen abgespeichert werden.
In der Zelle K2 errechne in einer Formel den Dateinamen, sprich Jahresrechnung & Name.

In der Zelle O1 wird der Wert des Dropdowns wiedergegeben, sprich wenn im Dropdown/ Listenfeld der 2. Name ausgewählt ist steht in der Zelle O1 der Wert 2.

Mit folgendem Code:

With Worksheets("Rechnung")
nn = Range(.Shapes("Listenfeld 3").DrawingObject.ListFillRange).Rows.Count
MerkWert = .Range("O1").Value
End With

sollen erstmal die Anzahl von Einträgen im Dropdown ausgelesen werden und die Schleife eben dementsprechend oft ablaufen lassen. Aber eben, er speichert mir immer nur den letzten Eintrag :-( Und ich schnall nicht warum...

Ist das ein wenig verständlicher erklärt? Vielen lieben Dank!

Gruss
Nik


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: {Boris}
Geschrieben am: 02.11.2012 16:18:48

Hi Nik,

Aber eben, er speichert mir immer nur den letzten Eintrag :-( Und ich schnall nicht warum...

Nochmal: Im Code selbst hast Du ZU BEGINN die Variablen mit den Werten aus K1 bzw. K2 gefüllt - und damit haben die Variablen solange diese Werte, bis Du ihnen neue zuweist. Und genau diese Neuzuweisung erfolgt in Deinem bisherigen Code nicht - daher bleibt der Dateiname immer der Selbe, und zwar genau so, wie er mit Deiner

In der Zelle K2 errechne in einer Formel den Dateinamen, sprich Jahresrechnung & Name.

ermittelt wurde.
Da ich aber weder Deine Datei noch die Formel aus K2 kenne, kann ich Dir bis dahin nicht mehr sagen - sorry.

VG, Boris


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 03.11.2012 10:08:05

Hallo zusammen,

sorry, es ist in der Tat etwas schwierig in Worten zu fassen was das Problem ist und somit natürlich fast unmöglich eine Lösung zu finden. Deshalb anbei das File, in dem das Problem, sprich das Makro PDF ersichtlich ist:

https://www.herber.de/bbs/user/82461.xls

In Zelle K1 und K2 auf dem Sheet "Rechnung" sind wie gesagt der Pfad und der Dateiname (errechnet) hinterlegt. Das Makro sollte jeweils alle Einträge im Dropdown (hier können jeweils alle Namen ausgewählt werden) abarbeiten und die Rechnungen im Pfad (Zelle K1) mit dem dazugehörigem Dateinamen (Zelle K2 berechnet) abspeichern. Allerdings wird nur die Rechnung des letzten Eintrages im Dropdown abgespeichert (wie das Boris auch schon gleich im Code gesehen hat..)

Was mache ich falsch? Achja, Excel ist auf automatische Berechnung gestellt, bezüglich des Dateinamens.

Gruss
Nik


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: {Boris}
Geschrieben am: 03.11.2012 11:03:51

Hi Nik,

so geht`s zum Beispiel:

Sub PDF()
Dim x As Long
Dim sPfad As String
sPfad = Worksheets("Rechnung").Range("K1")
For x = 1 To Worksheets("Datenbank Aktiv").Range("B101").End(xlUp).Row - 3
    Worksheets("Rechnung").Range("O1") = x
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        sPfad & "\" & Worksheets("Rechnung").Range("K2"), Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        From:=1, To:=1, OpenAfterPublish:=False
Next x
End Sub
VG, Boris


  

Betrifft: AW: Dynamischer Pfad & Dateiname im Makro von: Nik
Geschrieben am: 03.11.2012 11:36:31

Wooow...SUPER :-) Vielen herzlichen DANK! Es funktioniert und ich kann gar nicht sagen wieviel Zeit mir das jetzt spart! Ich weiss gar nicht wie ich danken soll!

Also vielen lieben Dank und ein schönes Weekend!

Gruss
Nik


 

Beiträge aus den Excel-Beispielen zum Thema "Dynamischer Pfad & Dateiname im Makro"