Wie kann ich Daten aus einer Arbeitsmappe in eine UserForm-ComboBox einlesen, ohne die Mappe zu öffnen?
Eigentlich gar nicht.
Man kann aber mit einer Formel Bezug auf eine geschlossene Mappe nehmen; deren Ergebnis erscheint dann. Dies kann man dann mit VBA verwenden. Also kann man auch mit VBA die Formel eintragen und dann das Ergebnis abgreifen. Die Formel kann zum Schluss wieder gelöscht wreden.
Beispiel:
Im Ordner C:\Eigene Dateien befindet sich die Datei DBAdressen.xlsx. Aus dieser Datei sollen vom Blatt Allgemein die Daten aus A1 bis A25 in eine Listbox eingelesen werden, ohne diese Datei zu öffnen.
Const strBezug As String = "='C:\Eigene Dateien\[DBAdressen.xlsx]Allgemein'!$A$"
'Folgende Scheife schreibt nacheinander die Formel in B2 und fügt der Listbox
'dann das Ergebnis der Formel hinzu.
Private Sub CommandButton1_Click()
Dim intI As Integer
ListBox1.Clear
Application.DisplayAlerts = False
For intI = 1 To 25
Range("B1").Formula = strBezug & intI
If Not IsError(Range("B1")) Then ListBox1.AddItem Range("B1").Text
Next
Range("B1") = ""
Application.DisplayAlerts = True
End Sub
Das Ganze kann (und sollte) natürlich mit Errorhandlings verfeinert werden.