Anzeige
Archiv - Navigation
1956to1960
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

variabler Dateipfad

variabler Dateipfad
16.12.2023 14:40:29
Heike
Hallo liebes Forum,

der folgende Code greift immer auf einen festen Dateipfad zu. Da sich dieser aber immer wieder ändert, möchte ich den gerne "variabel" haben. Der Dateiname ändert sich nicht. Zwar habe ich hier im Forum etwas gefunden über: Dim wbQuelle As Workbook; Dim wbZiel As Workbook, aber leider habe ich keine Ahnung, wie ich das in meinen Code einbinden soll.
Würde mich sehr freuen, wenn sich jemand meinen Code mal anschaut und vielleicht sogar korrigiert.
Vielen Dank im Voraus.
VG
Heike

Option Explicit


Private Sub Workbook_Open()

Application.ScreenUpdating = True 'muss auf True, ansonsten wird Windows(1) nicht aktiviert!!!


ChDir "C:\Users\Heike\Desktop\Vorlagen"


Workbooks.Open FileName:="C:\Users\Heike\Desktop\Vorlagen\Ausgangsbuch.xlsx"

Windows(1).Activate

If ThisWorkbook.Name = "Rechnungsvorlage.xltm" Then

Exit Sub

Else

Application.ScreenUpdating = False

Dim myWorksheet As Worksheet 'Passwort aufheben Rechnungsvorlage
For Each myWorksheet In ThisWorkbook.Worksheets
myWorksheet.Protect Password:="test123", userinterfaceonly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingRows:=True

ActiveSheet.EnableSelection = xlUnlockedCells
Next

Dim Datum As String
Datum = Format(Now, "dd.mm.yyyy") 'aktuelles Datum wird eingefügt
Range("G6") = Datum
End If
End Sub



Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 'wird gespeichert, werden die Daten übertragen und RechnungsNR vergeben

On Error GoTo R_Error

If ThisWorkbook.Name = "Rechnungsvorlage.xltm" Then

Exit Sub

Else

Dim newNr As Variant, oldNr As Variant
Dim FileName As String

FileName = "C:\Users\Heike\Desktop\Vorlagen\Rechnung.ini"


If Range("G4") > "" Then Exit Sub
Close #1
restart:
Open FileName For Input As #1
Line Input #1, oldNr
Close #1
newNr = oldNr + 1
Open FileName For Output As #1
Write #1, newNr
Close #1
Select Case Len(newNr)
Case 1
newNr = "000" & newNr

Case 2
newNr = "00" & newNr
Case 3
newNr = "0" & newNr
Case 4
newNr = newNr
Case 5
MsgBox "Zahlenlimit überschritten"
Exit Sub
End Select
Range("G4") = newNr & "-23"
R_Exit:
'Exit Sub
GoTo Weiter

R_Error:
Select Case Err
Case 53
Open FileName For Output As #1
Close #1
Open FileName For Output As #1
Write #1, 0
Close #1
Err.Clear
Resume restart
Case 54
Close #1
Resume restart
Case Else
MsgBox Err & ": " & Err.Description
Resume R_Exit
End Select

Weiter:



Workbooks("Ausgangsbuch.xlsx").Activate
Windows(1).Activate

If Range("G4") > "" Then

Dim wksSource As Worksheet, wksTarget As Worksheet
Dim iRow As Integer
Dim chkStr As String
Set wksSource = Worksheets("Rechnung")
Set wksTarget = Workbooks("Ausgangsbuch.xlsx").Worksheets(1)
' chkStr = wksSource.Range("A11").Value
iRow = wksTarget.Cells(Rows.Count, 1).End(xlUp).Row + 1
wksTarget.Cells(iRow, 1).Value = wksSource.Range("G4").Value 'RE-Nr
wksTarget.Cells(iRow, 2).Value = wksSource.Range("G6").Value 'Datum
wksTarget.Cells(iRow, 3).Value = wksSource.Range("A3").Value 'Empfänger1
wksTarget.Cells(iRow, 4).Value = wksSource.Range("A4").Value 'Empfänger2
wksTarget.Cells(iRow, 5).Value = wksSource.Range("A5").Value 'Straße
wksTarget.Cells(iRow, 6).Value = wksSource.Range("A6").Value 'Ort
wksTarget.Cells(iRow, 7).Value = wksSource.Range("G34").Value 'Gesamtbetrag
End If


Workbooks("Ausgangsbuch.xlsx").Activate
'ActiveWorkbook.Worksheets("Rechnungsausgangsbuch").Protect "test456"
ActiveWorkbook.Close SaveChanges:=True

Windows(1).Activate

Rem Bildschirmmeldung deaktivieren
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"\\C:\Users\ Heike\Desktop\Vorlagen\Rechnungen_AJ\" & Range("G4") & "_" & Range("A4").Text & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

ActiveWorkbook.Close SaveChanges:=False

With Application
.ScreenUpdating = True
.DisplayAlerts = True

End With

End If

End Sub




8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: variabler Dateipfad
16.12.2023 15:48:22
daniel
Wenn du mit "Variabel" "schnell und einfach änderbar" meinst, dann

Schreibe den Pfad in eine Zelle.
Gib der Zelle den Namen DateiPfad
Verwende im Code dann dieses:

Workbooks.Open FileName:= [DateiPfad] & "\Ausgangsbuch.xlsx"



Wenn sich der Pfad ändert, machst das dann einfach in der jeweiligen Zelle im Tabellenblatt.

Gruß Daniel
AW: variabler Dateipfad
16.12.2023 16:01:03
Piet
Hallo Heike

arbeite mit Const Anweisung, oder notiere den Pfad in einer Zelle, die du verändern kannst. Beides ist möglich!
Die Const Anweisung kannst du ins Sheet "DieseArbeitsmappe" über Private Sub Workbbook_Open setzen.
Const sPfad = "C:\Users\Heike\Desktop\Vorlagen\" -- oder mit Public Const in ein normales Modul setzen.
In einem Modul muss Const mit Public Const zur Öffentlichen Variblen erklärt werden, sonst klappt es nicht!
Workbooks.Open FileName:=sPfad & "Ausgangsbuch.xlsx"

Die zweite Alternative ist dir den Pfad in eine beliebige Zelle zu notieren. Und sPfad aus der Zelle zu laden.
sPfad = Worksheets("Tabelle1").Range("A1") -- Oder mit Set Anweisung als dritte Möglichkeit
Workbooks.Open FileName:=Workbooks(sPfad) & "Ausgangsbuch.xlsx"

Dritte Alternative mit einer Set Anweisung! Jetzt kannst du dir aussuchen was dir besser gefällt.
Sht = Worksheets("Tabelle1").Range("A1")
Set sPfad = Workbooks(Sht)
Workbooks.Open FileName:=sPfad & "Ausgangsbuch.xlsx"

mfg Piet
Anzeige
AW: variabler Dateipfad
16.12.2023 22:50:27
Piet
Hallo Heike

ich weiss nicht was du beim Code von Daniel noch machen müsstest? Damit kenne ich mich nicht aus.

Bei meinem Vorschlag musst du entweder den Pfad mit Public Const in ein normales Modul schreiben.
Oder in einem normalen Modul die Variable als Public sPfad as String als Öffentlich deklarieren.
Dann kannst du diese Variable am Code Anfang bei Workbook_Open aus einer beliebigen Zelle laden.
Bitte dabei auch immer die Tabelle mit angeben in der sich die Zelle befindet, z.B. so:
sPfad = ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value

mfg Piet
Anzeige
AW: freut mich das es geklappt hat!
16.12.2023 22:54:49
Piet
Hallo Heike

freut mich das es inzwischen bei dir geklappt hat. Da warst du etwas schneller.
Nun ja, wenn meine Nachricht aus Izmir/TR kommt, und man die Pferde wechseln muss ....
Manchmal stehe ich auch auf dem Schlauch, und das nach 20 Jahren Excel programmieren!

mfg Piet
AW: freut mich das es geklappt hat!
16.12.2023 23:00:40
Heike
*** lach *** ich musste zwar nicht die Pferde wechseln, aber füttern und bei der Kälte ist der Kopf ganz schnell wieder frei :-)
VG
Heike
AW: variabler Dateipfad
16.12.2023 16:34:07
Heike
Hallo Piet und Hallo Daniel,

vielen Dank für eure Unterstützung.

Jetzt habe ich mir den Pfad als Funktion in eine Zelle schreiben lassen. Nun versuche ich mal, mit euren Tipps, den in meinen (allerdings nicht von mir erstellten Code) einzubinden.
Ich melde mich gleich noch mal.

VG
Heike
Anzeige
AW: variabler Dateipfad
16.12.2023 17:50:41
Heike
Hallo Ihr Zwei,
ich bekomme es leider nicht hin.
Da es sich ja um eine Vorlage handelt, kann ich den Dateipfad ja nicht als Funktion einfügen. Ist nicht so schlimm, mache ich dann eben manuell in A1.
Dennoch weiß ich nicht, wo ich was hinschreiben muss. Würde das jemand von euch für mich umsetzen bitte? Wäre klasse. Danke euch.
VG
Heike
AW: variabler Dateipfad - GELÖST
16.12.2023 22:45:14
Heike
Hallo noch einmal Piet und Daniel,

manchmal muss man einfach mal 2 Stunden den Kopf frei machen und sich dann wieder mit der Umsetzung befassen. Es waren ja nur 3 Zeilen zu ändern!!!!

Schon ein bisschen peinlich ;-)

Wünsche allen ein schönes Wochenende.

VG
Heike
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige