lynkon
Goto Top

Outlook 2010 - Dropdown via OLEDB

Hallo Community,

ich möchte gerne im Outlook ein Formular haben, welches ein Dropdownmenü aufweist. Das Formular habe ich soweit fertig ,jetzt mangelt es am Dropdownmenü, das Menü soll möglichs die Werte nicht im Code stehen haben, sondern sich das auch einer Excel-Tabelle ziehen.

Kann mir da einer weiterhelfen?

Vielen Dank im voraus.

Content-ID: 377142

Url: https://administrator.de/contentid/377142

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

em-pie
em-pie 15.06.2018 um 15:54:33 Uhr
Goto Top
Moin,

vielleicht hilft dir das hier weiter:
https://www.mrexcel.com/forum/excel-questions/718965-vba-send-email-mult ...

Du muusst also deine Excel-Datei "öffnen", und mit dem .Range()-Attribut müsstest du dann deine Werte auswählen können.
Den Inhalt in eine Variable/ Array rein und dies dann in dein Dropdown-Inhalt...

So mal ganz grob logisch formuliert...

Gruß
em-pie
colinardo
Lösung colinardo 15.06.2018 aktualisiert um 19:15:26 Uhr
Goto Top
Servus,
da gibt es ein paar Möglichkeiten, die erste via ADODB:
Sub Item_Open()
        ' Excel Datei  
	strFile = "D:\Pfad\Daten.xlsx"  
        ' Name der Tabelle in der Exceldatei  
	strTableName = "Tabelle1"  
        ' Datenobjekte erstellen  
	Set objConnection = CreateObject("ADODB.Connection")  
	Set objRecordset = CreateObject("ADODB.Recordset")  
	' Verbindung zum Excel Sheet herstellen  
        objConnection.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=" & strFile & "; HDR=Yes;"  
        ' Recordset mit Daten aus der Tabelle füllen  
	objRecordset.Open "Select * FROM [" & strTableName & "$]", objConnection  
        ' Combobox referenzieren (Name des Tabs und des Controls selbstverständlich anpassen)  
	set objCombo = Item.GetInspector.ModifiedFormPages("Nachricht").Controls("ComboBox1")  
        'Recordset durchlaufen  
	Do Until objRecordset.EOF
                ' Item der Combobox hinzufügen (Spaltenname anpassen)  
   		objCombo.AddItem objRecordset.Fields.Item("Dropdowndata")  
                ' zur nächsten Zeile des Recordsets  
   		objRecordset.MoveNext
	Loop
        ' Verbindungen trennen  
	objRecordset.Close
	objConnection.Close
End Sub
Hier anzupassen ist der Pfad zur Datendatei (im Beispiel gehe ich davon aus das die Daten in einem Sheet mit dem Namen Tabelle1 stehen und in der ersten Zeile die Überschriften für die Daten. Auslesen tue ich hier eine Spalte mit dem Namen Dropdowndata um damit das DropDownfeld zu füllen.
Ebenfalls eventuell anzupassen ist der Connectionstring für das Connection Object, diese kannst du hier bekommen und ausprobieren wenn das obige bei dir nicht funktioniert weil der Treiber eben fehlt:
https://www.connectionstrings.com/ace-oledb-12-0/

Zweite Methode (langsamer) ist das Abrufen der Daten über GetObject
Sub Item_Open()
        ' Pfad zur Excel Datei  
	strFile = "D:\Pfad\Daten.xlsx"  
        ' Combobox referenzieren (Name des Tabs und des Controls selbstverständlich anpassen)  
	set objCombo = Item.GetInspector.ModifiedFormPages("Nachricht").Controls("ComboBox1")  
        ' Excel-Worksheet auf "Tabelle1" öffnen   
	With GetObject(strFile).Worksheets("Tabelle1")  
                ' und Bereich A2:Ax (x = letzte gefüllte Zelle in Spalte A) zur  Combobox hinzufügen  
		for each cell in .Range("A2:A" & .Cells(.Rows.Count, "A").End(-4162).Row)  
			objCombo.AddItem cell.Value
		Next
                ' Workbook object schließen  
		.Parent.Close
	End with
End Sub
Hier lese ich im Beispiel den dnamischen Bereich von A2:Ax aus Tabelle1 und fülle damit das Drop-Down-Feld.


So, damit solltest du jetzt eigentlich zurecht kommen.

Grüße Uwe
Lynkon
Lynkon 18.06.2018 um 08:10:40 Uhr
Goto Top
Perfekt, die erste Möglichkeit ist genau das wonach ich gesucht habe.

Vielen Dank Uwe face-smile
colinardo
colinardo 18.06.2018 um 08:50:08 Uhr
Goto Top
Immer gerne. face-wink.