Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1540to1544
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

Datei suchen und öffnen

Datei suchen und öffnen
09.02.2017 00:44:43
Tommy
Hallo
ich habe schon gesucht, doch nicht das richtige gefunden.
ich habe ein Textfeld (Textbox21) und ein Button (CommandButton4).
Nun möchte ich ein Text/Zahl in die TextBox schreiben und mit dem Button in
Orden X:\\Test\ nach der Datei suchen und öffnen.
ist die Datei nicht vorhanden, demendsprechend eine Info ausgeben.
Wie kann ich das in VBA umsetzen?
Mfg
Tommy

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Datei suchen und öffnen
09.02.2017 03:26:25
Thomas
Hallo
habe heute nacht noch etwas gefunden.
leider funktioniert noch nicht alles.
ich habe in der Userform die TextBox und den Button.
Der Button funktioniert und öffnet ein Fenster mit der Eingabe der suchenden Datei.
Ich muss den genauen Namen der Datei eingeben, inkl. Ednung.
1. Hier möchte ich das er auf den Wert/Text aus der TextBox zugreift.
2. Ich möchte nur ein Teil aus dem Dateinamen eingeben (Setzt sich aus Namen und Nummer Zusammen)
die Nummer würde mir reichen.
3. Die Dateiendung ist immer gleich, daher möchte ich auf die Eingabe der Endung verzichten
Ist die Datei nicht zu finden, möchte ich gern eine Msg "Datei nicht gefunden"
Folgenden Code habe ich unter "Diese Arbeitsmappe" kopiert.

Sub suchen()
Dim intRow As Integer
Dim DirToSearch As String, FileToSearch As String
Application.DisplayStatusBar = True
DirToSearch = "\\vw.vwg\vwdfs\K-E\EA\1764\Groups\EASZ-FR17\Oelblätter"
FileToSearch = InputBox("Geben Sie einen Dateinamen ein:" & Chr(10) & _
"(z.B. Test.xls)", "Datei suchen")
If Len(DirToSearch) = 0 Then Exit Sub
GetFilesInDirectory DirToSearch, FileToSearch
LookForDirectories DirToSearch, FileToSearch
Application.StatusBar = False
End Sub
Sub LookForDirectories(ByVal DirToSearch As String, FileToSearch As String)
Dim counter As Integer
Dim i As Integer
Dim Directories() As String
Dim Contents As String
counter = 0
DirToSearch = DirToSearch & "\"
Contents = Dir(DirToSearch, vbDirectory)
On Error Resume Next
Do While Contents  ""
If Contents  "." And Contents  ".." Then
If (GetAttr(DirToSearch & Contents) And vbDirectory) = vbDirectory Then
counter% = counter% + 1
ReDim Preserve Directories(counter)
Directories(counter) = DirToSearch & Contents
End If
End If
Contents = Dir()
Loop
If counter = 0 Then Exit Sub
For i = 1 To counter
GetFilesInDirectory Directories(i), FileToSearch
Application.StatusBar = "Durchsuche Ordner " & Directories(i) & "..."
LookForDirectories Directories(i), FileToSearch
Next i
End Sub
Sub GetFilesInDirectory(ByVal DirToSearch As String, FileToSearch As String)
Dim NextFile As String
On Error Resume Next
NextFile = Dir(DirToSearch & "\" & "*.*")
Do Until NextFile = ""
If NextFile = FileToSearch Then
MsgBox DirToSearch & "\" & NextFile
Workbooks.Open (DirToSearch & "\" & NextFile)
End If
NextFile = Dir()
Loop
End Sub
Um das Makro zu starten, steht folgender Code in der Userform:
Private Sub CommandButton4_Click()
DieseArbeitsmappe.suchen
End Sub

Wie muss ich den Code anpassen, um meine Wünsche umzusetzen?
Danke Thomas
Anzeige
Das könntest Du...
09.02.2017 07:44:38
Case
Hallo, :-)
... prinzipiell so machen: ;-)
Option Explicit
' Bedingte Kompilierung - wenn 64 Bit dann...
#If Win64 Then
Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" _
(ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
' ... sonst...
#Else
Private Declare Function SearchTreeForFile Lib "imagehlp.dll" _
(ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
#End If
' Bedingte Kompilierung - wenn 64 Bit dann...
#If Win64 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
#Else
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
#End If
Private Const SW_MAXIMIZE = 3
' Dateierweiterung UND Pfad gegebenenfalls anpassen!!!
Const strPath As String = "C:\Temp\"
Const strEX As String = ".pdf"
Private Sub CommandButton1_Click()
' Variablendeklaration
' Stringvariable mit Puffer
Dim strPathName As String * 255
Dim strName As String
Dim lngTMP As Long
On Error GoTo Fin
' Textbox mit Inhalt?
If Trim(TextBox1.Text)  "" Then
' Datei suchen, wenn gefunden ist der Rückgabewert ein Long ungleich 0
lngTMP = SearchTreeForFile(strPath, "*" & TextBox1.Text & "*" & strEX, strPathName)
If lngTMP = 0 Then
' Datei nicht vorhanden!
MsgBox "File not found!"
Else
' Puffer zurechtstutzen, überflüssige Leerzeichen weg
strPathName = Left$(strPathName, InStr(1, strPathName, vbNullChar) - 1)
strName = RTrim(strPathName)
' Datei öffnen
ShellExecute 0, "Open", strName, "", "", SW_MAXIMIZE
End If
End If
Fin:
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Anpassungen nicht vergessen!
Servus
Case

Anzeige
AW: Das könntest Du...
09.02.2017 22:36:44
Thomas
Hmm.
Stehe gerade auf dem Schlauch.
Ich weiß nicht so richtig, wo in den Code hineinkopieren muss?
Alles in die Userform, oder teile in "Diese Arbeitsmappe"?
Danke für die Hilfe
AW: Das könntest Du...
09.02.2017 22:46:08
Thomas
Haken für den offenen Thread vergessen
Na ja - was soll der Code...
10.02.2017 02:41:11
Case
Hallo, :-)
... in "DieseArbeitsmappe"? Es geht doch um eine UserForm. In meinem Beispiel von oben ist es halt "TextBox1" und "CommandButton1" - das musst Du anpassen. ;-)
Servus
Case

AW: Na ja - was soll der Code...
10.02.2017 03:33:42
Thomas
Sorry. Ich habe noch wenig mit VBA gemacht.
Ich habe den ganzen Code unter Formulare, Userform1 reinkopiert und nur das Laufwerk und die TextBox und Commandbutton geändert.
Wenn ich nun auf Play drücke, kommt der gleich ein Fehler und bleibt bei SearchTreeForFile hängen.
Fehler beim Kompilieren: Sub oder Function nicht definiert.
Der Code sieht bei mir nun so aus:
Option Explicit
' Bedingte Kompilierung - wenn 64 Bit dann...
#If Win64 Then
Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" _
(ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
#End If
' Bedingte Kompilierung - wenn 64 Bit dann...
#If Win64 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
#End If
Private Const SW_MAXIMIZE = 3
' Dateierweiterung UND Pfad gegebenenfalls anpassen!!!
Const strPath As String = "X:\\Daten\Hier"
Const strEX As String = ".xls"
Private Sub CommandButton4_Click()
' Variablendeklaration
' Stringvariable mit Puffer
Dim strPathName As String * 255
Dim strName As String
Dim lngTMP As Long
On Error GoTo Fin
' Textbox mit Inhalt?
If Trim(TextBox21.Text)  "" Then
' Datei suchen, wenn gefunden ist der Rückgabewert ein Long ungleich 0
lngTMP = SearchTreeForFile(strPath, "*" & TextBox21.Text & "*" & strEX, strPathName)
If lngTMP = 0 Then
' Datei nicht vorhanden!
MsgBox "File not found!"
Else
' Puffer zurechtstutzen, überflüssige Leerzeichen weg
strPathName = Left$(strPathName, InStr(1, strPathName, vbNullChar) - 1)
strName = RTrim(strPathName)
' Datei öffnen
ShellExecute 0, "Open", strName, "", "", SW_MAXIMIZE
End If
End If
Fin:
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Wo liegt mein Fehler?
Danke nochmal für die schnelle Hilfe
Anzeige
AW: Na ja - was soll der Code...
10.02.2017 03:34:39
Thomas
Sorry. Ich habe noch wenig mit VBA gemacht.
Ich habe den ganzen Code unter Formulare, Userform1 reinkopiert und nur das Laufwerk und die TextBox und Commandbutton geändert.
Wenn ich nun auf Play drücke, kommt der gleich ein Fehler und bleibt bei SearchTreeForFile hängen.
Fehler beim Kompilieren: Sub oder Function nicht definiert.
Der Code sieht bei mir nun so aus:
Option Explicit
' Bedingte Kompilierung - wenn 64 Bit dann...
#If Win64 Then
Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" _
(ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
#End If
' Bedingte Kompilierung - wenn 64 Bit dann...
#If Win64 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
#End If
Private Const SW_MAXIMIZE = 3
' Dateierweiterung UND Pfad gegebenenfalls anpassen!!!
Const strPath As String = "X:\\Daten\Hier"
Const strEX As String = ".xls"
Private Sub CommandButton4_Click()
' Variablendeklaration
' Stringvariable mit Puffer
Dim strPathName As String * 255
Dim strName As String
Dim lngTMP As Long
On Error GoTo Fin
' Textbox mit Inhalt?
If Trim(TextBox21.Text)  "" Then
' Datei suchen, wenn gefunden ist der Rückgabewert ein Long ungleich 0
lngTMP = SearchTreeForFile(strPath, "*" & TextBox21.Text & "*" & strEX, strPathName)
If lngTMP = 0 Then
' Datei nicht vorhanden!
MsgBox "File not found!"
Else
' Puffer zurechtstutzen, überflüssige Leerzeichen weg
strPathName = Left$(strPathName, InStr(1, strPathName, vbNullChar) - 1)
strName = RTrim(strPathName)
' Datei öffnen
ShellExecute 0, "Open", strName, "", "", SW_MAXIMIZE
End If
End If
Fin:
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Wo liegt mein Fehler?
Danke nochmal für die schnelle Hilfe
Anzeige
Ohne 64 Bit...
10.02.2017 03:47:54
Case
Hallo, :-)
... mal so: ;-)
Option Explicit
Private Declare Function SearchTreeForFile Lib "imagehlp.dll" _
(ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Private Const SW_MAXIMIZE = 3
' Dateierweiterung UND Pfad gegebenenfalls anpassen!!!
Const strPath As String = "C:\Temp\"
Const strEX As String = ".pdf"
Private Sub CommandButton1_Click()
' Variablendeklaration
' Stringvariable mit Puffer
Dim strPathName As String * 255
Dim strName As String
Dim lngTMP As Long
On Error GoTo Fin
' Textbox mit Inhalt?
If Trim(TextBox1.Text)  "" Then
' Datei suchen, wenn gefunden ist der Rückgabewert ein Long ungleich 0
lngTMP = SearchTreeForFile(strPath, "*" & TextBox1.Text & "*" & strEX, strPathName)
If lngTMP = 0 Then
' Datei nicht vorhanden!
MsgBox "File not found!"
Else
' Puffer zurechtstutzen, überflüssige Leerzeichen weg
strPathName = Left$(strPathName, InStr(1, strPathName, vbNullChar) - 1)
strName = RTrim(strPathName)
' Datei öffnen
ShellExecute 0, "Open", strName, "", "", SW_MAXIMIZE
End If
End If
Fin:
' Wenn ein Fehler auftritt gib ihn aus mit Fehlernummer und Beschreibung
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Du hast hoffentlich keinen Mac?
Servus
Case

Anzeige
AW: Ohne 64 Bit...
13.02.2017 00:56:30
Thomas
hallo
Der Code läuft nun Fehlerfrei durch. Doch leider, egal was ich tue, bekomme ich immer die Meldung,
das das Dokument nicht gefunden wurde.
Liegt das vielleicht am Dateinamen? Diese lauten bzw. sind so abgespeichert:
Meíer_Test_0815.xls
Gruß
Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige