Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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

Dir() läuft nicht richtig durch?

Dir() läuft nicht richtig durch?
28.04.2017 15:33:23
Max2
Hallo Leute,
ich lasse den Nutzer einen Ordner auswählen, anschließend lade ich alle Dateien die auf ".csv" enden, in eine Combobox rein.
Jetzt wählt der Nutzer eine Datei aus der Combobox aus und diese wird dann geöffnet und in ein neues Tabellenblatt importiert.
Bevor ich das mache Prüfe ich mit Dir(pfad) ob es die Datei denn auch wirklich gibt.
In der Combobox steht nach Ordnerwahl: "Bitte wählen"
Ich habe also Dir(pfad) mit pfad & ComboBox1.Value getestet...
Dir(pfad) läuft einfach durch und sagt: alles supi
Natürlich kann Excel dann später nicht die Datei "Bitte wählen" importieren und Excel hängt sich dann am Ende auf...
Mit ChDir() hatte ich es auch probiert, da passiert das gleiche...
Unten steht der Code.
Was mach ich diesmal falsch...?
Hier Code:

Sub get_file_from_selection()
Dim wantedFile As String
Dim sheetName As String
On Error Resume Next
'der Pfad zu der ausgewählten Datei
wantedFile = privatFolderName & UserForm1.ComboBox1.Value
'damit er keinen Ordner findet sondern eine Datei
If Right(wantedFile, 4)  ".csv" Then
wantedFile = wantedFile & ".csv"
End If
'Pfad Prüfen
If path_is_working(wantedFile) Then
...Code
End Sub
Function path_is_working(ByVal sPath As String) As Boolean
On Error GoTo doesNotWork
Dir (sPath)
path_is_working = True
Exit Function
doesNotWork:
MsgBox "Die ausgewählte Datei konnte nicht geöffnet werden!" _
, vbCritical, "Fehler beim Öffnen der Datei"
End Function

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
So läufts aber..
28.04.2017 15:40:18
Max2
Hallo, Leute
hier Code mit dem es geht:
Function path_is_working(ByVal sPath As String) As Boolean
Dim x
On Error GoTo doesNotWork
x = Dir(sPath)
If x = "" Then GoTo doesNotWork
path_is_working = True
abort = False
Exit Function
doesNotWork:
abort = True
MsgBox "Die ausgewählte Datei konnte nicht geöffnet werden!" _
, vbCritical, "Fehler beim Öffnen der Datei"
End Function

Aber das komische ist, dass ich, wenn ich eine Datei aus der Combobox auswähle und deren Namen änder,
Dir() einen Fehler wirft, bei "Bitte wählen.csv" wirft er nur nen NULL-String raus
Anzeige
AW: Dir() läuft nicht richtig durch?
28.04.2017 15:48:16
UweD
Hallo
warum benutzt du nicht Bordmittel?
Sub Datei_öffnen()
    Dim Pfad As String, Vorgabe As String, Dlg As FileDialog
    Dim Datei As String
    
    Pfad = "C:\Temp\"
    Vorgabe = "*.csv"
    
    Set Dlg = Application.FileDialog(msoFileDialogFilePicker) 'Datei wählen 
    With Dlg
        .AllowMultiSelect = False
        .InitialFileName = Pfad & Vorgabe
        .InitialView = msoFileDialogViewDetails 'Anzeige des Dialogs - die Dateien als Detail 
        .Title = "Datei auswählen"
    End With
    If Dlg.Show = True Then
        Datei = Dlg.SelectedItems(1)
        Workbooks.Open Filename:=Datei
        'usw... 
    Else
        MsgBox "Nix gewählt"
    End If
End Sub
LG UweD
Anzeige
Nutzer will es anders
28.04.2017 16:10:00
Max2
Hallo,
danke für deinen Vorschlag.
Leider will der Nutzer alle Csv-Dateien eines ausgewählten Ordners aufgelistet bekommen.
Deshalb kann ich keinen FilePicker nehmen sondern muss den FolderPicker benutzen.
Den ausgewählten Ordner, speichere in einer Private Variable, um später wieder darauf zugreifen zu können.
Der Nutzer kann also nach Auswahl des Ordners, nacheinander, jede einzelne Datei importieren ohne erneut den Ordner angeben zu müssen.
Das Prüfen des Dateipfades ist auch nur um wirklich sicher zu gehen, dass Excel nicht versucht eine Datei zu öffnen deren Namen versehentlich geändert wurde.
Anzeige
AW: Dir() läuft nicht richtig durch?
28.04.2017 15:57:22
Daniel
Hi
würde ich hier ganz anders machen.
mit:

IF Combobox1.ListIndex >= 0 THEN
kannst du prüfen, ob der Anwender eine Auswahl aus der Comboboxliste getroffen hat.
steht in der Comboboxeingabezeile ein Text, der nicht in der Liste vorhanden ist, dann ist der .ListIndex der Combobox -1
da du die Combobox mit gültigen Dateinamen aus einem bestehenden Verzeichnis befüllst hast, sollte diese Prüfung reichen.
nur so als Tip:
solange du am Code noch bastelts, unterlasse die pauschalen: ON ERROR RESUME NEXT
sonst weißt du ja nie, wo noch ein Programmierfehler steckt.
das On Error Resume Next sollte man erst dann einbauen, wenn der code Fehlerfrei läuft.
und Gotos braucht man eigentlich auch in Basic seit den 80ern des letzten Jahrhunderts nicht mehr.
Gruß Daniel
Anzeige
AW: Dir() läuft nicht richtig durch?
28.04.2017 16:16:34
Max2
Hallo,
damit kann ich nur ausschließen, dass Bitte wählen nicht geöffnet wird.
Ich kann aber nicht verhindern oder Prüfen ob der Nutzer versehentlich oder
aus böser Absicht den Dateinamen verändert oder falsch geschrieben hat.
AW: Dir() läuft nicht richtig durch?
28.04.2017 17:24:42
Daniel
Hi
naja, du liest doch den Dateinamen aktuell aus, die Dateinamen in der Comboboxliste müssen stimmen (oder habe ich das falsch verstanden)
wenn der Anwender also einen Dateinamen durch Klick auswählt, sollte also keine weitere Prüfung erforderlich sein.
Der ListIndex wird auch dann -1, wenn der Anwender im Textfeld einen beliebigen Text eingibt und dieser Text NICHT in der Auswahllisste vorhanden ist.
Wenn du den Dateinamen auf Vorhandensein prüfen willst, müsste aber dashier ausreichen, der Umweg über die eigene Funktion ist nicht notwendig:
IF Dir(Pfad&Dateiname) = "" Then
msgbox "Datei nicht vorhanden"
Else
hier der Code zum öffnen der Datei
und die weitere Bearbeitung
End if

eine weitere Möglichkeit wäre, dass du dir den Dateinnamen mit Application.GetOpenfilename geben lässt und hierbei im Filter einstellst, dass der Anwender nur CSV-Dateien auswählen darf.
Gruß Daniel
Anzeige
Vorhandenseinsprüfung
28.04.2017 18:13:08
WF
klänge irgendwie aussagekräftiger/kompetenter als:
"AW: Dir() läuft nicht richtig durch?"
oder ?
und warum muss dass jetzt
28.04.2017 22:57:06
Daniel
unbedingt kompetenter
klingen? Weichtig ist doch,
das der Inhalt passt.
findest du es wirklch angehnehm
solche auseinander gerissenen Sätze lesen
zu müssen?
Gruß Daniel
kindisch
29.04.2017 09:11:21
WF
Inhalt
Überspitzt
29.04.2017 11:36:36
Daniel
Sobald ich versuche, sachlich zu argumentieren, steigst du ja aus der Diskussion aus.
AW: Dir() läuft nicht richtig durch?
28.04.2017 21:59:00
Tino
Hallo,
im VBA werden Parameter in Funktionen ohne Call nicht in Klammern gesetzt.
Versuch es mal so. Habe ich jetzt nicht getestet.
Function path_is_working(ByVal sPath As String) As Boolean
If Dir (sPath, vbNormal)"" then
path_is_working = True
Else
MsgBox "Die ausgewählte Datei konnte nicht geöffnet werden!" _
, vbCritical, "Fehler beim Öffnen der Datei"
End if
End Function
https://msdn.microsoft.com/de-de/library/dk008ty4(v=vs.90).aspx
Gruß Tino
Anzeige
Danke das funktioniert ...owT
29.04.2017 12:27:15
Max2

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige