Anzeige
Archiv - Navigation
812to816
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
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Combox in Userform verlinken

Combox in Userform verlinken
01.11.2006 08:45:37
Matthias
Hallo Leute,
ich habe folgendes Problem:
Ich möchte gern eine combobox in eine userform integrieren und diese mit Datein füllen, die auf einem anderen Laufwerk stehen. Bisher klappte es ganz gut, da ich die combobox nicht in einer userbox integriert hatte und das sah so aus:
Sub Workbook_Open()
'Variablen
Dim blatt_produktplattform As String
Dim blatt_datenbank As String
Dim combobox_name As String
Dim i As Integer
Dim pfad As String
Dim dateiname() As String
Dim teile As Integer
'-----
blatt_produktplattform = "Produktplattform"
blatt_datenbank = "Datenbank"
'Die ComboBoxen dynamisch mit dem Inhalt der jeweiligen Ordner fuellen
For i = 1 To Worksheets(blatt_datenbank).Range("A65536").End(xlUp).Row Step 1
combobox_name = Worksheets(blatt_datenbank).Cells(i, 1)
pfad = Worksheets(blatt_datenbank).Cells(i, 2)
Worksheets(blatt_produktplattform).OLEObjects.Item(combobox_name).Object.Clear
'Wenn in der Variable pfad kein Pfad zu einem Verzeichnis steht sondern direkt zu eienr Datei
If FileExists(pfad) = False Then
'Sucht alle Dateien in dem Verzeichnis
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(pfad)
Set fc = f.Files
For Each f1 In fc 'Schreibt Name aller Dateien in die jeweilige ComboBox
Worksheets(blatt_produktplattform).OLEObjects(combobox_name).Object.AddItem f1.Name
Next
Else
'Schreibt spezifizierten Dateinamen in die ComboBox
dateiname() = Split(pfad, "\")
teile = UBound(dateiname)
Worksheets(blatt_produktplattform).OLEObjects(combobox_name).Object.AddItem dateiname(teile)
End If
'Style der ComboBox definieren
Worksheets(blatt_produktplattform).OLEObjects(combobox_name).Object.Style = fmStyleDropDownList
Worksheets(blatt_produktplattform).OLEObjects(combobox_name).Object.BoundColumn = 0
Worksheets(blatt_produktplattform).OLEObjects(combobox_name).Object.ListIndex = -1
Next i
End Sub
Public Function FileExists(strPath As String) As Boolean 'FileExists empfaengt den absoluten Pfad zu einer Datei und ueberprueft ob dieses existiere (Rueckgabewert: True od. False)
On Error Resume Next
FileExists = ((GetAttr(strPath) And (vbDirectory Or vbVolume)) = 0)
End Function
Option Explicit
Function file_open(combobox As String, datei As String) 'Öffnet eine Datei die sich im Pfad der jeweiligen ComboBox befindet
'Variabeln
Dim endung() As String
Dim dateiname() As String
Dim blatt_datenbank As String
Dim zeile As Integer
Dim pfad As String
'---------
blatt_datenbank = "Datenbank"
zeile = Worksheets(blatt_datenbank).Range("A1:A65536").Find(combobox).Row
pfad = Worksheets(blatt_datenbank).Cells(zeile, 2)
endung = Split(datei, ".")
'Ueberpruefung ob der Eintrag ein Pfad zu einem Verzeichnis oder direkt zu einer Datei ist
dateiname() = Split(pfad, "\")
If dateiname(UBound(dateiname)) = datei Then
Else
pfad = pfad & "\" & datei
End If
'-
'Wenn die Datei eine *.pdf Datei ist...
If endung(UBound(endung)) = "pdf" Then
Shell "C:\Programme\Adobe\Acrobat 6.0\Reader\AcroRd32.exe """ & pfad & """", vbMaximizedFocus
End If
'Wenn die Datei eine *.doc Datei ist...
If endung(UBound(endung)) = "doc" Then
Shell "winword.exe """ & pfad & """", vbMaximizedFocus
End If
'Wenn die Datei eine *.rtf Datei ist...
If endung(UBound(endung)) = "rtf" Then
Shell "winword.exe """ & pfad & """", vbMaximizedFocus
End If
'Wenn die Datei eine *.xls Datei ist...
If endung(UBound(endung)) = "xls" Then
Workbooks.Open Filename:=pfad
End If
'Wenn die Datei eine *.ppt Datei ist...
If endung(UBound(endung)) = "ppt" Then
Shell "powerpnt.exe """ & pfad & """", vbMaximizedFocus
End If
End Function

Private Sub Tiberius_Click()
Dim datei As String
Dim combobox As String
Dim ok As String
combobox = "Tiberius"
datei = Tiberius.List(Me.Tiberius.Value)
ok = file_open(combobox, datei)
End Sub

Wie bekomme ich das hin, dass es mit der userform auch funktioniert?
Vielen Dank
Matthias

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combox in Userform verlinken
01.11.2006 12:01:16
fcs
Hallo Mathias,
die Workbook_Open-Prozedur muss du dann angepasst als Initialisierungs-Prozedur des Userforms anlegen.
Falls du beim Öffnen der Datei direkt das Userform angezeigt bekommen möchtest, dann passt du diese entsprechend an mit
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Für das Userform muss du die Prozeduren wie folgt verschieben/anpassen:
Gruss
Franz
Die folgenden beiden Prozeduren unter dem Userform einfügen

Option Explicit
Private Sub UserForm_Initialize()
'Variablen
Dim blatt_datenbank As String
Dim combobox_name As String
Dim i As Integer
Dim pfad As String
Dim dateiname() As String
Dim teile As Integer
blatt_datenbank = "Datenbank"
'Die ComboBoxen dynamisch mit dem Inhalt der jeweiligen Ordner fuellen
For i = 1 To Worksheets(blatt_datenbank).Range("A65536").End(xlUp).Row Step 1
combobox_name = Worksheets(blatt_datenbank).Cells(i, 1)
pfad = Worksheets(blatt_datenbank).Cells(i, 2)
Me.Controls(combobox_name).Object.Clear
'Wenn in der Variable pfad kein Pfad zu einem Verzeichnis steht sondern direkt zu eienr Datei
If FileExists(pfad) = False Then
'Sucht alle Dateien in dem Verzeichnis
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(pfad)
Set fc = f.Files
For Each f1 In fc 'Schreibt Name aller Dateien in die jeweilige ComboBox
Me.Controls(combobox_name).Object.AddItem f1.Name
Next
Else
'Schreibt spezifizierten Dateinamen in die ComboBox
dateiname() = Split(pfad, "\")
teile = UBound(dateiname)
Me.Controls(combobox_name).Object.AddItem dateiname(teile)
End If
'Style der ComboBox definieren
Me.Controls(combobox_name).Object.Style = fmStyleDropDownList
Me.Controls(combobox_name).Object.BoundColumn = 0
Me.Controls(combobox_name).Object.ListIndex = -1
Next i
End Sub
Private Sub Tiberius_Click()
Dim datei As String
Dim combobox As String
Dim ok As String
combobox = "Tiberius"
datei = Tiberius.List(Me.Tiberius.Value)
ok = file_open(combobox, datei)
End Sub
für jede weitere Combobox mit Dateiauswahl eine gleichartige Clickprozedur einfügen

Die folgenden beiden Prozeduren in ein allgemeines Modul einfügen, bzw. dorthin verschieben

Option Explicit
Pfad zu einer Datei und ueberprueft ob dieses existiere (Rueckgabewert: True od. False)
On Error Resume Next
FileExists = ((GetAttr(strPath) And (vbDirectory Or vbVolume)) = 0)
End Function
Function file_open(combobox As String, datei As String) 'Öffnet eine Datei die sich im Pfad der jeweiligen ComboBox befindet
'Variabeln
Dim endung() As String
Dim dateiname() As String
Dim blatt_datenbank As String
Dim zeile As Integer
Dim pfad As String
blatt_datenbank = "Datenbank"
zeile = Worksheets(blatt_datenbank).Range("A1:A65536").Find(combobox).Row
pfad = Worksheets(blatt_datenbank).Cells(zeile, 2)
endung = Split(datei, ".")
'Ueberpruefung ob der Eintrag ein Pfad zu einem Verzeichnis oder direkt zu einer Datei ist
dateiname() = Split(pfad, "\")
If dateiname(UBound(dateiname)) = datei Then
Else
pfad = pfad & "\" & datei
End If
'Wenn die Datei eine *.pdf Datei ist...
If endung(UBound(endung)) = "pdf" Then
Shell "C:\Programme\Adobe\Acrobat 6.0\Reader\AcroRd32.exe """ & pfad & """", vbMaximizedFocus
End If
'Wenn die Datei eine *.doc Datei ist...
If endung(UBound(endung)) = "doc" Then
Shell "winword.exe """ & pfad & """", vbMaximizedFocus
End If
'Wenn die Datei eine *.rtf Datei ist...
If endung(UBound(endung)) = "rtf" Then
Shell "winword.exe """ & pfad & """", vbMaximizedFocus
End If
'Wenn die Datei eine *.xls Datei ist...
If endung(UBound(endung)) = "xls" Then
Workbooks.Open FileName:=pfad
End If
'Wenn die Datei eine *.ppt Datei ist...
If endung(UBound(endung)) = "ppt" Then
Shell "powerpnt.exe """ & pfad & """", vbMaximizedFocus
End If
End Function

Anzeige
AW: Combox in Userform verlinken
01.11.2006 16:31:31
Matthias
Hallo Franz,
vielen Ddank für deine Hilfe war echt super aber ein kleiner Fehler war noch drin.
Statt für den Rückgabewert "Option Explicit" zu benutzen musste es heißen:
Public Function FileExists(strPath As String) As Boolean
aber jetzt haut es hin. Danke
Gruß
Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige