DropDown Feld aus Oracle-Abfrage in Excel erzeugen

Folgendes Excel-Makro:

Sub Makro1()
Sheets(„Tabelle1“).Select

'Verbindung zur Datenbank
str_con = Array(„ODBC;DSN=xxx;UID=xxx:stuck_out_tongue_winking_eye:WD=xxx“)
str_sql = Array(„SELECT name || ‘ ’ || vorname FROM adressen“)

With ActiveSheet.QueryTables.Add(Connection:=str_con, Destination:=Range(„A25“), Sql:=str_sql)
.FieldNames = False
.Refresh
End With

Const strListe As String = „Hans Müller, Bernd Huber, Franz Meyer“
With Range(„A1“).Validation
.Delete
.Add xlValidateList, , xlEqual, strListe
End With

End Sub

Es soll ein DropDown Feld in A1 erzeugt werden mit dem Ergebnis aus der Oracle-Abfrage str_sql.

Über die Konstante strListe wird ein DropDown Feld erzeugt. (unterer Teil des Makros)
Wie kann ich die str_sql in die “.Add xlValidateList, …“ einbinden?

Vielen Dank für die Hilfe
mlyxs

Es soll ein DropDown Feld in A1 erzeugt werden mit dem
Ergebnis aus der Oracle-Abfrage str_sql.

Über die Konstante strListe wird ein DropDown Feld erzeugt.
(unterer Teil des Makros)
Wie kann ich die str_sql in die “.Add xlValidateList, …“
einbinden?

Hallo Mlyxs,

ich benutze Queries höchst selten und kenne mich da nicht so aus.

Bau mal in deinen Code unten ein:

Dim P
Worksheets.Add after:=Worksheets(Worksheets.Count)
For P = 1 To Len(str\_sql)
 Cells(P, 1) = Asc(Mid(str\_sql, P, 1))
Next P

und zeige mal hier was dann im neuen Blatt in Spalte A steht.

Btw.: Dim und Const gehört immer ganz an den Anfang des Codes.
Beim Start eines Codes werden sie immer zuerst ausgeführt, völlig gleich wo sie stehen. Sowas ist falsch gedacht:

If irgendwas Then
 Dim x as String
End If

Dim x wird sofort bei Codestart kompiliert, egal ob das If erfüllt ist.

Gruß
Reinhard