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-Key: 377142

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

Printed on: April 19, 2024 at 03:04 o'clock

Member: em-pie
em-pie Jun 15, 2018 at 13:54:33 (UTC)
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
Member: colinardo
Solution colinardo Jun 15, 2018 updated at 17:15:26 (UTC)
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
Member: Lynkon
Lynkon Jun 18, 2018 at 06:10:40 (UTC)
Goto Top
Perfekt, die erste Möglichkeit ist genau das wonach ich gesucht habe.

Vielen Dank Uwe face-smile
Member: colinardo
colinardo Jun 18, 2018 at 06:50:08 (UTC)
Goto Top
Immer gerne. face-wink.