anrion
Goto Top

Abfrage, ob Datei mit Variablem Wert existiert

Hallo Forum,

Ich habe diesen Code:

Sub Test()
Dim x As Long
Dim y As Long
x = Cells(56, 1)
y = Cells(56, 2)

Dim Dateiname, Pfad, Teil
Pfad = "O:\...\"  
Teil = Cells(x, y)
Dateiname = Dir(Pfad & "???_" & Teil)  
If Dir(Pfad & Dateiname) <> "" Then  
MsgBox "Ok"  
Else
MsgBox "Error"  
End If
End Sub

Jedoch funktioniert er nicht ganz wie er soll (bzw. gar nicht). Es soll in dem Ordner O:\...\ nach einer Datei gesucht werden, welche diese Syntax hat: ..._KW_Jahr - Ich habe bisher eine Tabelle mit allen dafür nötigen KW mit Jahren verbunden. z.B. ist momentan x = 32 und y = 1 - somit 32_2016. Nun möchte ich aber abfragen, ob diese File exisitiert oder nicht. Nur mein Makro spuckt mir immer Okay aus, obwohl die Datei nicht exisitiert.
Die KW und das Jahr sind Variablen - also wurden auch unter Teil und dann Dateiname zusammengefasst.

Mit freundlichen Grüßen Stefan

Content-Key: 312450

Url: https://administrator.de/contentid/312450

Printed on: April 18, 2024 at 23:04 o'clock

Mitglied: 129813
129813 Aug 12, 2016 updated at 06:39:06 (UTC)
Goto Top
Have a look at one of your posts where I answered, there you find this part:
set fso = CreateObject("Scripting.FilesystemObject")  
year = 2016
for kw = 1 to 52
    strPath = "O:\YOUR PATH\" & kw & "_" & year & ".xlsx"  
    if fso.FileExists(strPath) then
        msgbox "File exists: " & strPath  
    else
        msgbox "File does not exist: " & strPath  
    end if
next
So, making a simple for loop around it, build your filename and check all files for existence.

Regards
Member: Anrion
Anrion Aug 12, 2016 at 06:53:51 (UTC)
Goto Top
Thanks a lot. Its nice and works.

Btw how can I add there a variable f.e. CSV before the kw - In past I used ??? but here it doesn't work. Dont want to use CSV because if sb write this false its not the task.
Mitglied: 129813
129813 Aug 12, 2016 updated at 07:06:35 (UTC)
Goto Top
?? like above, define your variable and integrate it in line 4 like the other one's ... otherwise I don't understand what you mean.
Member: Anrion
Anrion Aug 12, 2016 at 07:15:58 (UTC)
Goto Top
Ok example:

I have a data which is maybe CSV_KW_Year and somebody wrote CSC_KW_Year. Now is the problem, that the makro doenst fit that. So i want to make it necessary to type CSV in front of the kw. Last times I used in my old macro

Dim Path, Data, Part
Data = Dir(Path & "???_" & KW & "_" & Year)  

But in this case he doesn't make the ??? for anything - he really search for the ? in the dataname.

You unterstand now?^^
Mitglied: 129813
129813 Aug 12, 2016 at 07:46:53 (UTC)
Goto Top
You unterstand now?^^
Yes face-smile.
Set fso = CreateObject("Scripting.FileSystemObject")  
Set regex = CreateObject("vbscript.regexp")  
regex.IgnoreCase = True
regex.Pattern = "^..._" & KW & "_" & Year & "\.xlsx$"  

for each file in fso.GetFolder("O:\YOUR FOLDER").Files  
    if regex.Test(file.Name) then
        msgbox "Matched File: " & file.Name  
    end if
Next
Member: Biber
Biber Aug 12, 2016 at 07:59:56 (UTC)
Goto Top
Moin Anrion,

Es wäre einfacher für Highload und alle anderen MitleserInnen, wenn du auf Deutsch antwortest.

Deine Frage bezieht sich laut Titel auf den Existenzcheck einer bestimmten Datei, laut Beschreibung aber auf Prüfung auf bestimmte Wildcards in einem Verzeichnis.

Offen bleibt da, wie es denn dann logisch weitergehen soll oder kann.
Vermutlich wäre diese if-DIR ()-Klamotte obsolet, wenn du gleich ein FileDialog-Objekt verwendest. Da kannst du auch einen Filter definieren mit Wildcards

Frag doch mal die Maus oder eine Suchmaschine.

Grüße
Biber
Mitglied: 116301
116301 Aug 12, 2016 at 08:10:54 (UTC)
Goto Top
Hallo!

Get dochface-wink:
Sub Test()
    Dim Dateiname, Pfad, Teil
    
    Pfad = "D:\Temp\"  
    Teil = "15" & "_" & "2016"  
    
    Dateiname = Pfad & "???_" & Teil & ".xlsx"  
    
    If Dir(Dateiname) <> "" Then  
        MsgBox "Exists"  
    Else
        MsgBox "Not Exists"  
    End If
End Sub
Gruß Dieter
Member: Biber
Biber Aug 12, 2016 at 08:59:24 (UTC)
Goto Top
Moin Dieter,

Bin ja nur Laie, aber...
Anrion sucht mit dem DIR () nach CSV-Dsteien ohne Extension, du nach CSV-Dateien mit Endung .xlsx.

Ihr könntet beide ins Leere greifen...

Grüße
Biber
Mitglied: 116301
116301 Aug 12, 2016 at 09:06:05 (UTC)
Goto Top
Hallo Biber!

Soweit ich das verstanden habe, steht CSV oder CSC anstelle der Fragezeichen, was hinten als Dateiendung stehen soll? Keine Ahnung (wie bei so vielen Dingen)face-smile

Grüße Dieter
Member: Biber
Biber Aug 12, 2016 updated at 09:27:19 (UTC)
Goto Top
Na ja, Dieter,

Ich hab ja weiter oben schon was zur Vollständigkeit der Frage geschrieben...

Okay, wie ich auf den Bolzen kam, eine Datei mit dem Namen CSV_××_2016.* könnte eine CSV-Datei sein... Synapsenfehlschaltung vermutlich. face-wink

Grüße
Biber
NB @129813;
...wie ich auf den Bolzen kam=how I came the bolt face-wink
Member: Pjordorf
Pjordorf Aug 12, 2016 at 10:42:14 (UTC)
Goto Top
Hallo,

Zitat von @Biber:
how I came the bolt face-wink
Selbst goggles kann das besserface-smile how I came to the bolt
Member: Biber
Biber Aug 12, 2016 updated at 12:30:02 (UTC)
Goto Top
[OT]
Moin Pjordorf,

Should we split hairs here? face-smile
Ich wollte ja nur highload auf die richtige Spur bringen, weil Langenscheidt ganz komische Synonyme für Bolzen liefert.
Nicht dass er denkt, es hätte was mit kratzenden Bundestrainer zu tun.

Aber danke.
Wichtiger allerdings wäre, wenn sich der TO mal rückmeldet.

Grüße
Biber
[/OT]