Tipp 0451
|
Dateinamen in ComboBox/ListBox auflisten
|
|
|
Autor/Einsender: Datum: |
|
Angie 11.05.2005 |
|
Entwicklungsumgebung: |
|
Excel 2000 |
|
|
In den hier folgenden Beispielen wurde für die Ermittlung der Arbeitsmappen im vorgegebenen
Verzeichnis die Funktion GetXLFiles() aus unserem Tipp
Dateien in vorgegebenen Verzeichnis ermitteln
verwendet. Der Code der Funktion ist hier nicht abgebildet, jedoch im Download-Beispiel
enthalten.
|
Mit nur einer Codezeile können die im Datenfeld enthaltenen Dateinamen einer ComboBox
oder ListBox zugewiesen werden.
|
|
|
Me.ComboBox1.List = astrXLFiles
Me.ListBox1.List = astrXLFiles
|
|
|
Dateinamen inkl. Pfad in einer Spalte in einer ComboBox auflisten |
|
In folgendem Beispiel werden die ermittelten Arbeitsmappen im vorgegebenen Verzeichnis in einer
Spalte in einer ComboBox auf einer UserForm aufgelistet.
|
|
|
Private Sub UserForm_Initialize()
Dim strPath As String
Dim astrXLFiles() As String
strPath = ThisWorkbook.Path
If Len(Dir$(strPath, vbDirectory)) > 0 Then
If GetXLFiles(astrXLFiles(), strPath, False) Then
With Me.cboFileNames1
.Style = fmStyleDropDownList
.List = astrXLFiles
End With
Erase astrXLFiles
Else
Me.lblMsg.Caption = _
"Keine Excel-Arbeitsmappen im Verzeichnis " & _
strPath & " gefunden!"
End If
Else
Me.lblMsg.Caption = "Das Verzeichnis " & strPath & _
" existiert nicht!"
End If
End Sub
|
|
|
Im Click-Ereignis der ComboBox/ListBox kann das ausgewählte Element wie folgt ermittelt werden:
|
|
|
Private Sub cboFileNames1_Click()
MsgBox Me.cboFileNames1.Text, vbInformation, Me.Caption
End Sub
|
|
|
Pfad und Dateinamen getrennt in zwei Spalten in einer ComboBox auflisten |
|
Damit Pfad und Dateinamen getrennt in zwei Spalten in einer ComboBox oder
ListBox angezeigt werden können, werden Pfad und Dateiname der einzelnen Dateien
ermittelt und in einem zwei-dimensionalen Datenfeld zwischengespeichert, und anschließend der
ComboBox zugewiesen.
|
Damit nur der Dateiname für den Anwender sichtbar ist, wird in diesem Beispiel die Breite der
1. Spalte der ComboBox, in der sich der Pfad befindet, auf 0 gesetzt.
|
|
|
Private Sub UserForm_Initialize()
Dim strPath As String
Dim astrXLFiles() As String
Dim astrListData() As String
Dim nFilesCnt As Long
Dim nFile As Long
Dim strFileName As String
Dim strFile As String
strPath = ThisWorkbook.Path
If Len(Dir$(strPath, vbDirectory)) > 0 Then
If GetXLFiles(astrXLFiles(), strPath, False) Then
nFilesCnt = UBound(astrXLFiles)
ReDim astrListData(nFilesCnt, 1)
For nFile = 0 To nFilesCnt
strFileName = astrXLFiles(nFile)
strFile = Dir$(strFileName)
astrListData(nFile, 0) = Left$(strFileName, _
Len(strFileName) - Len(strFile))
astrListData(nFile, 1) = strFile
Next
With Me.cboFileNames2
.Style = fmStyleDropDownList
.ColumnCount = 2
.ColumnWidths = "0"
.BoundColumn = 1
.List = astrListData
End With
Erase astrListData
Erase astrXLFiles
Else
Me.lblMsg.Caption = _
"Keine Excel-Arbeitsmappen im Verzeichnis " & _
strPath & " gefunden!"
End If
Else
Me.lblMsg.Caption = "Das Verzeichnis " & strPath & _
" existiert nicht!"
End If
End Sub
|
|
|
Im Click-Ereignis der ComboBox/ListBox kann das ausgewählte Element wie folgt ermittelt werden:
|
|
|
Private Sub cboFileNames2_Click()
With Me.cboFileNames2
MsgBox "Pfad: " & .List(.ListIndex, 0) & vbCrLf & _
"Dateiname: " & .List(.ListIndex, .BoundColumn), _
vbInformation, "VB-fun-Demo"
End With
End Sub
|
|
|
|
|