HERBERS Excel-Forum - das Archiv

Thema: Pfadname: CStr mit * für variablen Teil eines Dateinamens

Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
Hallo liebes Forum,

folgendes Problem:
ich habe in einem Makro einen Pfad bislang definiert, der auf eine Quell-Datei (im Code: quelldatei) zugreift, die teilweise einen variablen Namen hat:
Die Datei heisst vollständig: 155200_4003462147_28062024
Dabei ist alles, was nach 155200_ folgt variabel und verändert sich jedes Mal. Besonders der Mittelteil ist nicht systematisch sich ändernd.

Um das abzufangen, habe ich bislang mit der CStr Funktion beim Auslesen der Quelldatei aus einem Ordner auf einem Server gearbeitet. Jetzt liegt die Datei auf einem Sharepoint. Der Zugriff erfolgt auf den synchronisierten Ordner.
Ich habe sowohl den alten Codeteil für "quelldatei" als auch den neuen unten aufgelistet. Mit dem alten Code wird der volle Dateiname erkannt. Mit dem
neuen Code wird "...155200*.xls" erkannt, was dann zu einer Fehlermeldung führt:
Die Datei enthält vertrauliche Daten und ist mit diversen weiteren Makros versehen, weshalb ich nocht die ganze Datei hochladen kann, sondern den Code nachfolgend auszugsweise einfüge:
--------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Zinsen_Kopie()

... *************** Teile des Codes überspringe ich, um zum Wesentlichen unten Überzuleiten)

' Es werden aus dem Inputdatum die drei Stellen für Tag, Monat und Jahr isoliert und der
' Variablen nam zugeordnet


nam = d & m & y ' Hilfsvariable für das Bilden eines datumsabhängigen Unterordners, aktuell 280624
Name = y & m & d ' Hilfsvariable für das Bilden eines datumsabhängigen Unterordners, aktuell 240628

***********************************************************************************************************************

'''''''''''''''''''''''''''''''''''''Neuer Pfadnamen für den geänderten Speicherort auf dem Sharepoint

User = GetUserName() ' Um mehreren Usern den Zugriff über die Sharepoint- Verknüpfung auf die Datei zu ermöglichen wird diese Function benötigt (ist für diesen Sachverhalt unerheblich)
pfad = "C:\Users\" & User & "\Risikocontrolling PKD & CTA - Dokumente\DT\Reports\" '''' Sharepoint Verknüpfung auf die Arbeitsdatei, in die die Daten der Quelldatei eingelesen werden sollen
aktuelle_datei = "C:\Users\" & User & "\Risikocontrolling PKD & CTA - Dokumente\DT\Reports\LZK PF Konstruktion_" & nam & ".xlsm"
LZK = "LZK PF Konstruktion_" & nam & ".xlsm"
''''''''Neuer Pfad zum Einlesen der Quelldatei über den Sharepoint Pfad. Hier funktioniert CStr leider nicht. Es wird ....155200*.xls erkannt, was dann zum Fehler führt: '''''''''''
quelldatei = "C:\Users\M11234\Risikocontrolling PKD & CTA - Dokumente\AGI-Dateien\" & Name & "\Fonds\Trust\" & CStr("155200") & "*" & ".xls"
''''''''''' dabei ist M11234 mein technischer Username siehe Variable "User". '''''''''''


''''''''''''''Ursprüngliche Pfadnamen, als die Datei noch auf dem X: Server lag. Das hat immer funktioniert mit "quelldatei" ''''''''''''''''''
'pfad = "X:\Risikomanagement\Tro\Trust\"
'aktuelle_datei = "X:\Risikomanagement\Tro\Trust\LZK PF Konstruktion_" & nam & ".xlsm" '
'LZK = "LZK PF Konstruktion_" & nam & ".xlsm"
quelldatei = "H:\MAL_HR\AV\Pool\Risikomanagement\Gab\Daten\" & Name & "\Fonds\Trust\" & CStr("155200") & "*" & ".xls"

------------------------------------------------------------------------------------------------------------------------

Könnt Ihr mir hier weiterhelfen? Vielen dank schon jetzt vorab. Trommy
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
"Hier funktioniert CStr leider nicht." ? Was genau hast DU denn dort erwartet? Was, glaubst du, macht CStr überhaupt?
Wieso eigentlicj XLS und nicht XLSX oder XLSM ?
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
Hallo, als die Datei noch auf dem Server lag wurde der Pfad vollständig richtig ausgelesen:
H:\MAL_HR\AV\Pool\Risikomanagement\Gab\Daten\" & Name & "\Fonds\Trust\155200_4003462147_28062024.xls
Das erfolgte mit der oben erwähnten CStr("155200") & "*" & ".xls"-Lösung.

Auf dem durch Synchronisation erhaltenen Sharepoint Verzeichnispfad klappt das leider nicht, sondern es resultiert:
C:\Users\M11234\Risikocontrolling PKD & CTA - Dokumente\AGI-Dateien\" & Name & "\Fonds\Trust\155200*.xls

d.h. der Dateiname wird nicht richtig "erkannt". Ich hoffe das hilft Dir weiter
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Nochmal: WIESO XLS ???
Hast du denn wirklich XLS-Dateien? Die gibt es seit 2006 nicht mehr.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Statt
quelldatei = "C:\Users\M11234\Risikocontrolling PKD & CTA - Dokumente\AGI-Dateien\" & Name & "\Fonds\Trust\" & CStr("155200") & "*" & ".xls"

Kannst du genauso gut auch
quelldatei = "C:\Users\M11234\Risikocontrolling PKD & CTA - Dokumente\AGI-Dateien\" & Name & "\Fonds\Trust\155200*.xlsx"' (oder .xlsm)

schreiben - CStr wird doch gar nicht benötigt.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
leider doch. Ansonsten kommt folgende Fehlermeldung beim Ausführen des Codes, wenn die Datei über den Pfad geöffnet werden soll:

Wir konnten < Pfad...155200*.xls"> nicht finden. Wurde das Objekt vielleicht verschoben, umbenannt oder gelöscht?
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Ist denn die Datei, die du öffnen willst, jetzt tatsächlich eine XLS-Datei oder eine XLSX bzw XLSM-Datei?
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Der Steuerfuzzi
Hallo,

selten eine so unstrukturierte Frage gesehen. Zudem gibt es auch Code-Tags.

Es stellt sich die Frage, wo der Fehler angezeigt wird. Denn in den von Dir angegebene Code-Schnipseln kann der Fehler nicht auftreten, da Du hier nur die Variable füllst und der Code zu einer gültigen Zuweisung führt.

Ich vermute mal, der Fehler tritt beim öffnen der Datei auf. Allerdings fehlt sowohl der Code als auch die genaue Fehlermeldung ...

Kenn mich leider mit Sharepoint nicht wirklich aus, aber sollte der Pfad nicht eine Web-Adresse sein? Oder ist Sharepoint korrekt im Explorer als Laufwerk eingebunden und synchronisiert? Zugriff über Explorer ist also gegeben?

Grüße
Michael


AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
Hallo, genau. Der Fehler tritt im Code auf, wenn mittels des Pfads bei "quelldatei" die definierte Datei 1552000 usw. geöffnet werden soll. Folgende Fehlermeldung tritt dann auf:

Wir konnten < ...155200*.xls"> nicht finden. Wurde das Objekt vielleicht verschoben, umbenannt oder gelöscht? Wobei in <> der vollständige "Pfad" hier abgekürzt ist.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Wie lautet denn eine der Dateien, die du öffnen willst (vollständig) ?
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Der Steuerfuzzi
Kannst du auch die anderen Fragen beantworten? Sharepoint als Laufwerk eingebunden? Zugriff über den Explorer auf die Sharepoint-Freigabe ist möglich?

Öffne mal eine Datei von genau diesem Pfad und lasse Dir den Pfad der Datei mit Thisworkbook.path anzeigen. Was gibt VBA aus?
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Ich hab schon etliche Male gefragt, ob die Datei WIRKLICH die Endung XLS hat, aber ich bekomme keine Antwort.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
sorry aber ich muss leider auch noch parallel arbeiten und kann daher nicht alle 5 Minuten in den Chat springen:
155200_4003462147_28062024.xls ist der volle Dateiname.

Die Datei erhalten wir von einem externen Anbieter, daher ist das Dateiformat gesetzt.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
155200_4003462147_28062024.xls ist der vollständige Dateiname (Datei kommt von Extern, daher ist das Format gesetzt).

Wie im ursprünglichen Thread geschrieben geht es darum, dass unsere Dateien künftig von einem Server auf einen Sharepoint umgezogen werden müssen.
Dieser Sharepoint wurde von mir synchronisiert, das man so wie mit Verzeichnissen mit den Dateien arbeiten kann. Eine Bearbeitung über den Browser auf dem Sharepoint ist keine Lösung. Bei uns läuft der synchronisierte Verzeichnispfad über das C-Laufwerk.

Beim Öffnen über den Code tritt die Fehlermeldung auf, also wenn die Codezeile erreicht wird:
Workbooks.Open Filename:=quelldatei (quelldatei hatte ich im Thread ja genant)

Wir konnten < "C:\Users\M11\Evonik Industries AG\Risikocontrolling PKD & CTA - Dokumente\Pensionskasse\AGI-Dateien...155200*.xls"> nicht finden. Wurde das Objekt vielleicht verschoben, umbenannt oder gelöscht?

D.h. es wird - im Unterschied zum Pfad, als die Datei noch auf dem Server lag - nicht mehr der vollständige Dateiname erkannt, was dann zum genannten Fehler führt.
Das Makro habe ich bereits seit Jahren so im Einsatz. Es wurde lediglich der genannte Pfad (quelldatei) wie beschrieben angepasst. Und ich verstehe nicht weshalb es mit dem Sharepoint-Pfad nicht genauso ausgelesen werden kann wie mit dem Server-Pfad.
Ich hoffe, dass beatwortet Deine Fragen.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Habe dir eben erst geantwortet. Bitte lesen.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Der Steuerfuzzi
Also nochmal:
Zugriff auf den Pfad/die Datei über den Explorer möglich?

Einstellungen Sharepoint/Laufwerksfreigabe korrekt vorgenommen?
https://support.microsoft.com/de-de/office/synchronisieren-von-sharepoint-dateien-und-ordnern-87a96948-4dd7-43e4-aca1-53f3e18bea9b
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
Hallo Steuerfuzzi,

vielen Dank für Deine Geduld und Deinen Support.
Der User "Onur" hat mir gerade den entscheidenden Hinweis gegeben.

Damit ist mein Problem nun gelöst und ich brauche keine weitere Unterstützung mehr.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Onur
Du kannst keine Datei mit "*" öffnen.
Nur so geht sowas
Private Sub CommandButton1_Click()

Dim dateiname
dateiname = Dir("c:\Name*.xls")
If Not dateiname = "" Then
Workbooks.Open Filename:="A:\" & dateiname
Else
MsgBox "Datei nicht gefunden"
End If
End Sub
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Marcus Trommler
Hallo Onur, Dein letzter Hinweis trifft ins Schwarze!
Ich habe einfach folgendes gemacht:

quell_file = Dir("C:\Users\...\Fonds\Trust\" & CStr("155200") & "*" & ".xls")
quelldatei = "C:\Users\" & User & "\Evonik Industries AG\Risikocontrolling PKD & CTA - Dokumente\Pensionskasse\AGI-Dateien\" & Name & "\Fonds\Trust\" & quell_file

Damit klappt wiedr alles.
Vielen Dank für Deine Geduld und insbesondere für den Support!

AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Oppawinni
Ich dachte mir zwar gleich, dass das sowas ist, aber wollte es nicht glauben. Ich bin immer wieder überrascht, was man so alles falsch machen kann ..
Irritiert hatte mich, dass ein alter Code funktioniert haben soll. Naja.. wieder einer zufrieden und gut.
AW: Pfadname: CStr mit * für variablen Teil eines Dateinamens
Der Steuerfuzzi
Hallo Opawinni,

Workbooks.open funktioniert mW mit Wildcards ohne Probleme (auch wenn man das nicht machen sollte, um unvorhergesehenes Verhalten zu vermeiden). Ich vermute hier einen Zusammenhang mit dem Pfad zum gespiegelten Sharepoint-Ordner auf der lokalen Festplatte.

Grüße
Michael
Gerne !
Onur
Gerne!
Hättest du meine Frage direkt beantwortet, wären wir schon seit Stunden fertig. :)