Anzeige
Archiv - Navigation
680to684
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
680to684
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateipfad variabel einlesen

Dateipfad variabel einlesen
14.10.2005 11:44:17
Daniela
Hallo Zusammen!
Ich hab mir einen Macro zusammengebastelt (mit Müh und Not ;-) ), der mir Daten aus einem Excelsheet in eine Access Datenbank zieht (s.u.).
Ich hab nun folgendes Problem:
Der Pfad der Datenbank wird sich vorraussichtlich hin und wieder ändern. Die Excel Dateien sind Umfragebögen und werden vervielfältigt, so dass der Macro in etwa 100 oder mehr Exceldateien enthalten sein wird.
Ich hab nun wahrlich keine Lust den Pfad in allen Exceldateien zu aktualisieren, sobald sich der Pfad der Datenbank ändert.
Wie könnte man das Problem am besten lösen und v.a. programmieren?
Meine Überlegung: Ich lege ein Excelsheet an, in dem ich den Pfad der Datenbank angebe, auf den die Macros in den anderen Excelsheets dann zugreifen. Ändert sich der Pfad, dann muss ich nur in diesem einem Excelsheet den Pfad ändern (Macros sollten sich dann automatisch aktualisieren!)
Wie könnte man das Programmiertechnisch umsetzen?
Hier der Macro:

Sub Daten_Anlagen_speichern_in_Access()
Dim db As DAO.Database, rs As DAO.Recordset, r As Long
Set db = OpenDatabase("U:\Datenbank\LEB_Datenbank.mdb")
Set rs = db.OpenRecordset("Anlagen", dbOpenTable)
r = 1
With rs
.AddNew
.Fields("Bestellnr") = Sheets("Ergebnisblatt").Range("H" & r + 8).Value
.Fields("Lieferant") = Sheets("Ergebnisblatt").Range("C" & r + 6).Value
.Fields("Projekt") = Sheets("Ergebnisblatt").Range("C" & r + 8).Value
.Fields("Kontinent") = Sheets("Ergebnisblatt").Range("H" & r + 5).Value
.Update
End With
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Dateipfad variabel einlesen
14.10.2005 11:51:01
Matthias
Hallo Daniela,
du kannst den Pfad auch in einex Textdatei schreiben und hier auslesen:

Sub SetzePfad(strDB As String)
Dim ff As Integer
ff = FreeFile()
Open "D:\DB-Pfad.txt" For Output As ff
Print #ff, strDB
Close #ff
End Sub
Function DBPfad() As String
Dim ff As Integer
ff = FreeFile()
Open "D:\DB-Pfad.txt" For Input As #ff
Line Input #ff, DBPfad
Close #ff
End Function

Gruß Matthias
AW: Dateipfad variabel einlesen
14.10.2005 13:33:28
Daniela
Hallo Matthias,
Danke für deine Hilfe.
Eine Frage noch: Könnte man das ganze Problem auch irgendwie umsetzten, so dass ich gar kein fixes Element brauche? In meiner Lösung darf sich nun ja der Pfad der Textdatei nicht mehr ändern.
Lg, Daniela
Anzeige
AW: Dateipfad variabel einlesen
14.10.2005 13:40:48
Matthias
Hallo Daniela,
hmmm....
Du könntest den Namen der Textdatei in einer Textdatei ... ;-)
----
Naja, überleg mal, irgendwo muss ja stehen, wo der Pfad zu finden ist.
Do kannst es auch in der Registry ablegen, aber das müsstest du für jeden Rechner und jeden Benutzer extra machen.
Gibt es keinen (Netzwerk-)Pfad, wo du sagen kannst ok, da soll das immer stehen?
Gruß Matthias
AW: Dateipfad variabel einlesen
20.10.2005 15:41:55
Daniela
Hallo Matthias,
nochmal eine zu meinem Problem.
Wenn die Datenbank nun beispielsweise unter
D:\Daniela\Datenbank\LEB_Datenbank.mdb
abgespeichert wird und die Exteltabellen, die den Pfadt zur Datenbank enthalten unter
D:\Daniela\Datenbank\Bewertungen
abgespeichert sind, kann ich dann nicht irgendwie den Makro so schreiben, dass auf denselben Ordner zugegriffen wird, à la: ThisWorkbook.Path & "/LEB_Datenbank.mdb
oder so ähnlich?
Problem Exectabellen sind nicht im genau selben Ordner wie die Datenbank abgespeichert, sondern einen Ordner drunter.
Wenn du mir nochmal helfen könntest, wär das echt nett!
Liebe Grüße,
Daniela
Anzeige
AW: Dateipfad variabel einlesen
20.10.2005 16:34:43
Matthias
Hallo Daniela,
mit dieser Funktion kommst du wohl weiter:

Function TopFolder(ByVal pfad As String) As String
If Right(pfad, 1) = "\" Then
pfad = Left(pfad, Len(pfad) - 1)
End If
TopFolder = Left(pfad, InStrRev(pfad, "\"))
End Function

In der Excel-Mappe dann:
MsgBox "Pfad ist: " & TopFolder(ThisWorkbook.Path) & "LEB_Datenbank.mdb"
Gruß Matthias
AW: Dateipfad variabel einlesen
24.10.2005 11:27:53
Daniela
Hallo Matthias,
Vielen Dank für deine Hilfe, es klappt! :-)
Eine Frage noch:
Wie muss ich den Code abändern, wenn ich 2 Ordner nach oben will?
Liebe Grüße,
Daniela
Anzeige
AW: Dateipfad variabel einlesen
24.10.2005 11:34:35
Matthias
Hallo Daniela,

MsgBox "Pfad ist: " & TopFolder(TopFolder(ThisWorkbook.Path)) & "LEB_Datenbank.mdb"

Gruß Matthias
AW: Dateipfad variabel einlesen
24.10.2005 13:20:17
Daniela
Vielen Dank für Deine Hilfe!
Keine weiteren fragen ;-)
Einen schönen Tag noch.
Lg, Daniela

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige