Verzeichnispfad per VBA angeben
#1
Hallo Forum
eventuell kann man mir ja hier helfen.....

Mein Problem:

In Laufwerk D:\ gibt es den Ordner "Google Drive", den ich gerne zum Speichern meiner Daten nutzen möchte. OK, so weit so gut.

In dem Ordner "Google Drive" gibt es 5 Unterordner mit den Namen "Angebot" - "Rechnung" - "1. Mahnung" - "2. Mahnung" - "3. Mahnung"
"
Jeder dieser Ordner hat nun wiederum 10 weitere Unterordner mit den Namen "2020" - "2021" - "2022" - "2023" - usw. usw. bis zum 2030.

Der VBA Code soll nun so angepasst werden, dass je nachdem was ich erstelle - "Angebot" - "Rechnung" - "1.2.3 Mahnung" der entsprechende Ordner und dann der entsprechende Jahresordner als Speicherziel genommen wird.

Beispiel: Rechnung im Jahr 2020

D:\Google Drive\Rechnung\2020\Speichername

D:\Google Drive\ (ist fest vorgegeben)

1. Ordnername: - Hier "Rechnung" wird als Variable aus Zelle "BA320" als Text bezogen

2. Ordnername: - Hier "2020" wird als Variable aus Zelle "EC7" als Zahl bezogen

Speichername wird in Zelle "FM7" über "Verketten" erzeugt;  Name, Straße Hausnummer, Plz. Ort

Mein Makro speichert die Dateien zwar schon am Richtigen Ort aber immer in den Ordner "RECHNUNGEN" - das möchte ich angepasst haben..

Hier mein Makro:

Private Sub CommandButton13_Click()

Dim Pfad As String
Pfad = "D:\Google Drive\Rechnungen\" & Sheets("Eingabe").Range("EC7") & "\" & Sheets("Eingabe"). _
Range("FM7") & ".xlsm"
ThisWorkbook.SaveAs Filename:=Pfad

End Sub


Vielen Dank für eure Vorschläge

Anbei eine sehr einfache Beispieldatei
Top
#2
Hallöchen,

in Deinem Code ist das Wort Rechnung fest programmiert. Dort müsste sicher die Zelle rein, wo Du die Auswahl vornimmst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo,
du hast 100 Punkte.... Nur wie mache ich das ???

Wie muss der Code entsprechend angepasst werden?

Hab leider keine VBA Kenntnisse und nur sehr wenig Excel Kenntnisse....

Bitte hilf....

Danke Hans
Top
#4
Moin!
Nun, so schwer ist das doch nicht, oder?

Dim Pfad As String
With Sheets("Eingabe")
  Pfad = "D:\Google Drive\" & .Range("BA320") & "\" & .Range("EC7") & "\" & .Range("FM7")
End With
ThisWorkbook.SaveAs Filename:=Pfad


Die Dateiendung kannst Du Dir sparen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
Ach so:

Zitat:Speichername wird in Zelle "FM7" über "Verketten" erzeugt;  Name, Straße Hausnummer, Plz. Ort


Was machst Du, wenn ein Kunde zwei oder mehr Rechnungen im Jahr erhält?
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Moin moin,
der Kunde kann bis zu 30.000 Rechnungen im Monat bekommen, denn der Rechnungsnummernkreis - wird im Speichernamen mit angegeben - jede Rechnung ist damit individuell-

Dazu kommt noch, dass der entsprechende Monat - Jan, Feb, Mär, usw. mit im Speichernamen auftaucht.

Die Rechnungsnummer setzt sich dazu noch aus Kundennummer - Monat - Jahr zusammen, ist also für das Finanzamt eindeutig - und das für jeden Kunden - zu erkennen--

MfG

Hans

Übrigens.... die angegebenen Codes funktionieren nicht.... bin nun auf der Suche nach einem Excel Programmierer hier am Ort....

Hier noch einmal meine - sehr vereinfachte - Datei (kann, und darf das Original nicht hochladen) 


.xlsx   Beispiel.xlsx (Größe: 17,81 KB / Downloads: 4)
Top
#7
Hallo,
hier im Anhang mal die Fehlermeldungen von Excel.....

Den Code von Ralf hatte ich auch versucht.... geht gar nicht....

Dim Pfad As String
With Sheets("Eingabe")
  Pfad = "D:\Google Drive\" & .Range("BA320") & "\" & .Range("EC7") & "\" & .Range("FM7")
End With
ThisWorkbook.SaveAs Filename:=Pfad


Hans    

   
Top
#8
Hallo Hans,

ich dachte ja, Dein Code wäre auch von Dir, daher die kurze Antwort.
Bezogen auf Dein Beispiel wäre der Code so. Ich hab mal noch den fehlenden CommandButton im Blatt eingefügt, der hat nun bei mir die 1.

Option Explicit

Private Sub CommandButton1_Click()
Dim Pfad As String
Pfad = Sheets("Eingabe").Range("C31") & Sheets("Eingabe").Range("D31") & ".xlsm"
ThisWorkbook.SaveAs Filename:=Pfad, FileFormat:=52
End Sub

Bei Deinem VERKETTEN hast Du um die Backslashs Leerzeichen gemacht, dass solltest Du nicht tun. Dein Verzeichnis heißt z.B. sicher "2025" und nicht " 2025 "

Arbeitsblatt mit dem Namen 'Eingabe'
D
303. Mahnung \ 2025 \ ALLDIE SCHOENEN DINGE - Große Freiheit 123 - 23588 Hamburg - 1233 - 1220 - 2025 - 3. Mahnung
313. Mahnung\2025\ALLDIE SCHOENEN DINGE - Große Freiheit 123 - 23588 Hamburg - 1233 - 1220 - 2025 - 3. Mahnung

ZelleFormel
D30=VERKETTEN(G5;" \ ";E5;" \ ";I5;" - ";C5;" - ";A5;" - ";E5;" - ";G5)
D31=VERKETTEN(G5;"\";E5;"\";I5;" - ";C5;" - ";A5;" - ";E5;" - ";G5)
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Hallo Schauan,
vielen Dank für deine Mühe, nun klappt alles Prima.....

Mein FEHLER war, das der Speicherort und Ordnername nicht identisch benannt wurden.

Wenn ich also unter "Rechnung" abspeichern wollte, wurde der Ordner "Rechnung" gesucht und konnte nicht gefunden werden, weil dieser "RECHNUNGEN" hieß.

Manchmal sieht man den Wald vor lauter Bäumen nicht... Geändert und geht....

Was soll ich an Trennzeichen nehmen, zur besseren Lesbarkeit hab ich es ja so gemacht....

Aldi;" ";"-";" ";schönen;" ";"-";" ";Sachen / Daraus wird dann Aldi - schönen - Sachen / Lässt sich doch gut lesen...

Noch einmal vielen Dank für Eure Hilfe

Hans
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste