Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
968to972
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
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Probleme mit Pfadangabe

Probleme mit Pfadangabe
20.04.2008 13:53:14
Christoph
Liebes Forum,
ich braeuchte mal wieder eure Hilfe.
Ich programmiere gerade in VBA und dazu sollen verschiedene Arbeitsmappen geoeffnet werden, also muss ich den Pfad aus Strings variabel zusammenbasteln. Da gibts Probleme.
Geb ich folgendes an, oeffnet es ohne Probleme: Workbooks.Open ("...\A0DD12\A0DD12_03.08.xls") Das ist der tatsaechliche Name der Datei. Gebe ich allerdings Workbooks.Open ("...\A0DD12\A0DD12*.xls") an, kommt eine Box mit der Fehlermeldung, dass er den Pfad nicht kennt. Ich haette immer gedacht (und auch nur Bestaetigungen im Netz gefunden), dass das * ein Platzhalter ist und es daher ohne Probleme funktionieren sollte. Wo koennte der Fehler liegen?
Vielen Dank und Gruesse Christoph.

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 14:07:34
Tino
Hallo,
Platzhalter bei Pfadangaben kenne ich nicht.
Es gibt nur die verkürzte Form (DOS), aber das sind keine Platzhalter.
Gruß
Tino

AW: Probleme mit Pfadangabe
20.04.2008 14:34:48
Christoph
Hallo Tino,
deine Antwort ueberrascht mich jetzt schon sehr. Bspw. empfiehlt diese Homepage explizit den Gebrauch eines Platzhalters (s. Tip 2): http://www.rondebruin.nl/copy4.htm . Zwar verwendet er dazu die Dir-Funktion, die liefert in meinem Fall dann aber immer einen Fehler ("Bad name").
Falls es nun aber wirklich keinen Platzhalter geben sollte, wuerde das bedeuten, dass ich einen Pfad aus Strings so zusammensetzen muss, dass der Name am Schluss genau passt? Oder geht auch das Namen zusammensetzen nicht, und ich muss den Pfad einfach manuell eintragen?
Vielen Dank fuer Eure Hilfe.

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 15:18:41
Tino
Hallo,
das ist auch etwas anderes.
Die DIR Funktion ist eine art Listfunktion, in der auch Platzhalter verwendet werden können.
Beispiel.:
Sub MeineExcelDateien()
Dim FilesInPath As String, c As Integer
FilesInPath = Dir$("C:\" & "*.xl*")
Do While Len(FilesInPath) 0
c = c + 1
FilesInPath = Dir$
Loop
End Sub
Aber zum öffnen einer Datei, benötigst du die direkte Pfadangabe.
Oder du verbindest beide miteinander.
Beispiel:

FilesInPath = "C:\" & Dir$("C:\" & "*.xl*")
Workbooks.Open FilesInPath


Gruß
Tino

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 15:19:00
Daniel
Hi
eventuell hilft dir dabei die DIR-Funktion weiter, die kommt mit Platzhaltern auf jeden Fall zurecht.

Dim Pfad as string
Pfad = Dir("...\A0DD12\A0DD12*.xls")
Workbooks.Open(Pfad)


bei der Workbooks.Open-Methode könnte ich mir Vorstellen, daß es Probleme gibt, weil bei Platzhaltern ja keine Eindeutigkeit gegeben ist.
die DIR-Methode kommt damit zurecht, weil sich mit
Pfad = Dir()
das nächste passende Element ermitteln ließe.
wenn du also alle Dateien öffnen möchtest, die auf deine Angaben passen, könntest du das mit dieser Schleife machen:


dim Pfad as string
Pfad = Dir("...\A0DD12\A0DD12*.xls")
do Until Pfad  ""
Workbooks.Open(Pfad)
Pfad = Dir()
loop


Gruß, Daniel

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 15:18:00
Erich
Hi Christian,
Workbooks.Open erwartet als ersten Parameter den Namen einer Datei.
Platzhalter wie * oder ? sind dabei nicht möglich.
Es könnte ja mehrere Dateien geben, die dem Muster entsprechen - welche Datei soll dann geöffnet werden?
Bei Dir("..\xyz\abc*.xls") sind diese Platzhalter ausdrücklich zugelassen,
der Aufruf liefert den Namen der ersten gefunden Mappe.
Wenn du danach Dir() (genau in dieser Form) aufrufst, liefert die Funktion den nächsten Namen,
der dem Muster entspricht oder einen Leerstring, falls keine weitere Mappe mit passendem Namen existiert.
Probier es mal mit

Sub a()
Dim strName As String
strName = Dir("..\xyz\abc*.xls")   ' anpassen
Workbooks.Open strName
strName = Dir()
Workbooks.Open strName
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 18:07:00
Christoph
Hallo ihr Drei,
vielen Dank fuer eure Hilfe. Da ihr alle die Dir-Funktion nennt, wird das wohl der Weg zum Erfolg sein. Aber bei mir haut es nicht hin. So sieht mein Code aus (wo kann man denn hier das Code-Format einstellen?):
Dim Nummer as String
Dim Path as String
Dim Address as String
Nummer = A0DD12
Path = "...\"
Address = Path & Nummer & "*\" & Nummer & "*.xls"
FilesInPath = Dir(Address)
Set wbkMonthly = Workbooks.Open(FilesInPath, UpdateLinks:=0)
Fehlermeldung 52: Bad File Name or Number.

AW: Probleme mit Pfadangabe
20.04.2008 18:21:18
Tino
Hallo,
du musst den Pfad wo die Datei liegt komplet angeben.

Sub test()
Dim Nummer As String
Dim Path As String
Dim Address As String
Nummer = "A0DD12"
Path = "C:\Documents and Settings\" 'Deinen Pfad angeben
FilesInPath = Path & Dir$(Path & "*" & Nummer & "*.xls")
Set wbkMonthly = Workbooks.Open(FilesInPath, UpdateLinks:=0)
End Sub


Gruß
Tino

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 18:36:00
Christoph
Hi Tino, das war das Problem. Ich hatte den Pfad schon richtig angegeben, nur mit ... abgekuerzt. Was wohl das Problem war: Nicht nur die Dateien, sondern auch der uebergeordnete Ordner hatten variable Namen (eben diese A0DD12, etc. bei denen manchmal was dahinter steht, manchmal nicht). Bei der Datei kann man das mit DIR machen, bei dem Ordner nicht, da ja der Pfad davor angegeben werden muss, wie du mir gerade geschrieben hast. Hier ist ein Platzhalter wieder nicht erlaubt, weil er einen eindeutigen Pfad braucht. Von daher muss ich das jetzt einfach haendisch alles mal sauber und einheitlich benennen, dann duerfte es klappen.
Vielen Dank fuer die Hilfe!

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 18:48:00
Tino
Hallo,
es gibt Suchfunktionen, die auch unterordner nach bestimmten Dateien durchsucht.
Anmerkung: Diese Funktioniert nicht unter Office 2007
Beispiel

Sub test()
Dim Nummer As String, FilesInPath As String
Dim Path As String
Dim Address As String
Nummer = "A0DD12"
Path = "C:\Documents and Settings\" 'Deinen Pfad angeben
With Application.FileSearch
.NewSearch
.LookIn = Path
.SearchSubFolders = True
.Filename = "*" & Nummer & "*.xls" 'Datei Typ
.Execute
If (.FoundFiles.Count) > 0 Then
'gibt den kompletten Pfad mit Datei zurück
'kann auch in einer Schleife verwendet werden um alle
'Treffer aufzurufen
FilesInPath = .FoundFiles(1)
End If
End With
End Sub


Gruß
Tino

Anzeige
Erich hat recht, Beispiel mit Schleife
20.04.2008 19:09:00
Tino
Hallo,
Erich hat natürlich recht mit der Verwendung von VBA begriffen.
Hier das Beispiel noch mit einer Schleife

Sub test()
Dim strNummer As String, strFilesInPath As String
Dim strPath As String, i As Integer
strNummer = "A0DD12"
strPath = "C:\Documents and Settings\" 'Deinen Pfad angeben
With Application.FileSearch
.NewSearch
.LookIn = strPath
.SearchSubFolders = True
.Filename = "*" & strNummer & "*.xls" 'Datei Typ
.Execute
For i = 1 To .FoundFiles.Count
'gibt den kompletten Pfad mit Datei zurück
'kann auch in einer Schleife verwendet werden um alle
'Treffer aufzurufen
strFilesInPath = .FoundFiles(i)
Next i
End With
End Sub


Gruß
Tino

Anzeige
AW: FileSearch nicht mehr verwenden
21.04.2008 07:47:00
Erich
Hi Tino,
eine Bemerkung/ein Tipp:
Application.FileSearch sollte man nicht mehr verwenden!
Du hattest hier schon geschrieben, dass das in XL2007 nicht mehr unterstützt wird.
Bei einer künftigen Umstellung auf XL2007 oder später können genug Probleme auftreten,
da muss man jetzt nicht noch wissentlich zusätzliche Probleme einbauen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: FileSearch nicht mehr verwenden
21.04.2008 11:42:00
Tino
Hallo Erich,
ich persönlich habe 2003 und finde Application.FileSearch
sehr komfortabel. (wenig Code, viel dahinter)
Daher werde ich persönlich diese Version so lange nutzen wie es geht.
Habe zwar schon einige andere Versionen teilweise aus diesem Forum in der Schublade,
diese nutze ich aber erst bei bedarf.
Probleme sehe ich eigentlich auch nicht „Application.FileSearch“ weiterzugeben, sollte mal einer umsteigen gibt es ja dieses Forum da bekommt man schnell Hilfe.
Wen ich dazuschreibe „geht nicht in 2007“ kann man ja ruhig sagen, ich benutze aber auch 2007, dann hättest Du oder ich oder ein anderer die alternative rein geschoben.
Kurz und bündig, ich sehe es nicht so eng.
Gruß
Tino

Anzeige
AW: Probleme mit Pfadangabe
20.04.2008 18:38:35
Erich
Hi Christoph,
statt dreier Punkte sollten es nur zwei Punkte sein.
Path und Address solltest du nicht als Variablennamen missbrauchen - das sind VBA-Begriffe.
Versuch mal

Dim Nummer As String
Dim strPath As String
Dim strAddress As String
Dim wbkMonthly As Workbook
Dim FilesInPath As String
Nummer = "A0DD12"    ' gehört in ""
strPath = "..\"      ' ZWEI Punkte
strAddress = strPath & Nummer & "\" & Nummer & "*.xls"  ' ohne 1. "*"
FilesInPath = Dir(strAddress)
If FilesInPath > "" Then _
Set wbkMonthly = Workbooks.Open(FilesInPath, UpdateLinks:=0)

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Probleme mit Pfadangabe
21.04.2008 21:57:43
Christoph
Sorry, dass ich mich hier so lange nicht gemeldet habe. Leider bekomme ich keine Meldung, falls eine Nachricht auf meinen Beitrag kommt, da es wohl als Spam erkannt wird ;-( Jedenfalls euch vielen Dank. Laeuft jetzt wunderbar. Habe auch die Begriffe veraendert, auch wenn VBA nicht rumgezickt hat. Sicher ist sicher.

AW: Probleme mit Pfadangabe
20.04.2008 18:38:00
Daniel
Hi
ich glaube, wir alle haben nicht berücksichtigt, daß DIR() nur den Dateinamen, aber nicht den kompletten Pfad zurückgibt, dh. zum Öffnen der Datei musst du den Pfad noch ergänzen.
Allerdings akzeptiert DIR() den Platzhalter nur beim letzten Dateinamen, nicht aber im Pfad davor.
Du müsstest also in 2 Stufen erst den korrekten Dateipfad über DIR() ermitteln und dann mit diesem Pfad den Dateinamen:

Sub test()
Dim Pfad As String
Dim Datei As String
Dim Nummer As String
Dim wblMonthly As Workbook
Nummer = "A0DD12"
Pfad = Dir("...\" & Nummer & "*", vbDirectory)
Datei = Dir(Pfad & "\" & Nummer & "*.xls")
Set wbkMonthly = Workbooks.Open(Pfad & "\" & Datei, UpdateLinks:=0)
End Sub


Gruß, Daniel
ps. Code ist nicht getestet
pps. um den Text als code zu vormatieren, markiert man ihn und klickt auf den Button ZITAT

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige