Hallo geehrte VBA-Götter,
wieder einmal möchte ich um euer schier grenzenloses Wissen bitten, da ich erneut ein Thema habe, welches meine Kenntnisse weit übersteigt.
Ich habe eine Excel-Datei, die per odc-Datei eine Datenbankverbindung hat und mit der ich die Daten in der Exceldatei regelmäßig aktualisiere.
Nun stellt sich gerade die Herausforderung, dass ich das Select, welches die Daten von der DB abfragt und starr in der odc-Datei hinterlegt ist, so umgestalten muss,
dass ein Teil der Where-Clause sich variabel aus einem sich verändernden Bereich in einer Tabelle zusammensetzen muss.
Konkret:
mit einem Makro:
Sub DbAbfrage_mit_einem_Parameter_aus_Zelle()
Debug.Print
Dim odc_pfad As String
odc_pfad = "ABFRAGE_KD_NUMMER"
With ActiveWorkbook.Connections(odc_pfad).ODBCConnection
.BackgroundQuery = True
.CommandText = Array("SELECT kdname FROM datenbank WHERE kdnummer IN (" & Worksheets("Tabelle1").Cells(1, 1) & ")")
.CommandType = xlCmdSql
.Connection = Array(Array( _
"ODBC;DRIVER={Client Access ODBC Driver (32-bit)};SYSTEM=127.127.0.0;DBQ=QGPL CHLLIB;DFTPKGLIB=QGPL;LANGUAGEID=ENU;PKG=QGPL/DEFAULT(" _
), Array("IBM),2,0,1,0,512;QRYSTGLMT=-1;"))
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
With ActiveWorkbook.Connections(odc_pfad)
.Name = odc_pfad
.Description = ""
End With
ActiveWorkbook.Connections(odc_pfad).Refresh
End Sub
bekomme ich schon hin, in die Zelle A1 eine Kundennummer für das Select mitzugeben, das klappt auch und da bin ich schon mächtig stolz drauf.
Allerdings muss ich nicht nur eine Kundennummer, sondern eine sich ständig verändernde Anzahl von Kundennummern mitgeben, die sich in einem anderen Tabellenblatt (Tabelle2, Spalte A)
befinden.
All meine Versuche, aus der einen Zelle einen Bereich zu machen, sind kläglich gescheitert.
Hättet ihr eine Lösung für mein Problem?
Vorab gang herzlichen Dank für euer Hirnschmalz.
VG
Bovie
|