# Gibt es bei VBA Drivelistbox



## jbk (7. Juni 2005)

Hallo erst mal

Ich wollte fragen ob es bei VBA unter Excel 97 auch drivelistbox und filelistbox gibt.
Ich finde sie nicht in der Werkzeugsammlung und brauche sie unbedingt. Ich habe eine Excelmappe mit Tabellen deren Daten ich anders angeordnet in eine text datei speichern will. dafür hab ich ein makro geschrieben das fragt(mit dialogfenster) wo man die datei anlegen will. in diesem dialogfenster würde ich gern eine drivelistbox und eine filelistbox einfügen.
Ich habe sowas schon mit VB5 gemacht mit verzeichnis aussuchen aber die form von VB5 kann ich nicht in VBA einbinden und in VBA find ich wie gesagt diese tools in der wekzeugsammlung nicht.

Danke schon mal im vorraus
mfg jbk


----------



## Orakel (7. Juni 2005)

Hi,

also ich hab leider kein Excel 97 mehr. Aber unter  meiner Excelversion kann ich im VBA weitere Steuerelemente hinzufügen.

Unter dem Menüpunkt "Extras" gibt es bei mir den Menüpunkt "Zusätzliche Steuerelemente" bzw. "Verweise". Mit beiden Punkten kann ich dann z. B. das "Microsoft Common Dialog Control 6.0" verfügbar machen (sieht IMHO besser aus 

Gruß
Das Orakel


----------



## jbk (7. Juni 2005)

danke für deine antwort.
Ich bin mir bewusst, dass man steuerelemente hinzufügen kann aber ich finde bei denen keine Drivebox oder filebox heißt das, dass es keine Drivebox gibt unter VBA?

Hab noch ne zweite frage wenn ich bei meinem Dialog einen falschen nicht existierenden pfad angebe wie mach ich das, dass er das abfängt im sinne von fileexist bzw. notexist?


----------



## Orakel (7. Juni 2005)

Hmmmm,,

vielleicht verstehe ich ja jetzt was falsch, aber wenn Du sowohl File- und Dirlistbox oder das Common Dialog Control benutzt, kann der Anwender doch keinen falschen, nicht existierenden Pfad wählen. Beide Ansätze bringen doch nur existirende Laufwerke und Pfade zur Anzeige. Ich hab mal ein quick Code angehängt, um Dir zu zeigen, dass es mit dem Commondialog Control problemlos möglich ist dafür zu sorgen, dass der User nur gültige Pfade eingeben kann.


```
Private Function GetSaveFilename() As String
    GetSaveFilename = vbNullString
    With CommonDialog1
        .DialogTitle = "Datei speichern unter"
        .InitDir = "D:\Temp"
        .Filter = "Textfile (*.txt)|*.txt|All Filetypes (*.*)|*.*"
        .FilterIndex = 1
        .CancelError = True
        .Flags = cdlOFNPathMustExist Or cdlOFNOverwritePrompt
        On Error GoTo SaveError
        .ShowSave
        GetSaveFilename = .Filename
    End With

ExitSub:
    On Error GoTo 0
    Exit Function

SaveError:
    Resume ExitSub
End Function

Private Sub CommandButton1_Click()
    szFilename = GetSaveFilename
    If szFilename = vbNullString Then
        MsgBox "No File selected"
    Else
        MsgBox "File '" & szFilename & "' selected"
    End If
End Sub
```

Gruß
Das Orakel


----------



## jbk (7. Juni 2005)

danke.
Die sache ist die: Ich habe die excel tabelle mit daten wenn ich das makro jetzt starte kommt eine userform mit textbox in der textbox schreibe ich D:Verzeichnis\Namedatei.txt wenn ich auf ok drück speichert er unter diesem name. wenn ich aber einen falschen pfad eingebe ( z:verzeichnis\Namedatei.txt zum bleistift) dann kommt natürlich ein fehler im programm. 

2.Du hast mich falsch verstanden ich arbeite mit excel (VBA) dort habe ich keine drivebox gefunden ich hab nur eine im normalen VB5.


----------



## Orakel (7. Juni 2005)

Na dann machs doch wie folgt:


```
If Dir$(TextBox1.Text, vbNormal) = "" Then
        MsgBox "Falsche Dateiangabe"
    Else
        MsgBox "Hier kommt der Code für's speichern"
    End If
```

Hope it helps
Das Orakel


----------



## jbk (7. Juni 2005)

vielen dank orakel
ich habe es jetzt zwar anders gemacht(mit zwei textbox1 und 2 in der einen steht der path überprüfen mit folderexist und in der anderen box dateiname überprüfen mit fileexist) aber danke für die mühe und zeit.

An alle: Kann jemand meine andere Frage beantworten. Gibt es keine Möglichkeit bei VBA in einem Dialog eine filelistbox oder drivelistbox zu erstelllen. Fals das nur mit commendialog geht der funktioniert bei mir nicht richtig.


----------

