als Anfänger stehe ich vor folgendem Problem: Ich möchte per VBA aus Excel mit einem variablen Wert, der in einer Textbox eingetragen wird, externe Daten über MS-Query einlesen und in der Excel-Tabelle wieder ausgeben. Der variable Wert ist h1. Wird anstatt der Variablen ein Wert im VBA hinterlegt, klappt alles, bei der Variablen bricht das Skript mit der Meldung "Laufzeitfehler 1004, Allgemeiner ODBC-Fehler" ab und bleibt in der Zeile ".Refresh BackgroundQuery:=False" stehen. Ich hoffe, daß mir hier jemand weiterhelfen kann. Danke und Gruß Dirk
Private Sub CommandButton1_Click()
Dim h1 As Integer
Makro2_Wertübernahme (TextBox1.Value)
h1 = TextBox1.Value
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel-Dateien;DBQ=C:\Temp\Kun_1.xls;DefaultDir=C:\Temp;DriverId=22;MaxBufferSize=512;PageTimeout=5;" _
, Destination:=Range("A1"))
.Sql = Array( _
"SELECT Kunde.BK, Kunde.Gjahr, Kunde.KNDNR, Kunde.VT1, Kunde.VT2, Kunde.ARTNR, Kunde.PGR, Kunde.KTRGR, Kunde.KTR, Kunde.UMSATZ, Kunde.KOSTEN" & Chr(13) & "" & Chr(10) & "FROM `C:\Temp\Kun_1`.Kunde Kunde" & Chr(13) & "" & Chr(10) & "Where Kunde.VT1=h1" & Chr(13) & "" & Chr(10) & "ORDER BY Kunde.BK, Kunde.Gjahr, Kunde.KNDNR")
.FieldNames = True
.RefreshStyle = xlInsertDeleteCells
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.HasAutoFormat = True
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SavePassword = True
.SaveData = True
End With
End Sub
Sub Makro2_Wertübernahme(v_Nr As Integer)
MsgBox "Gewählter Vertreter " & v_Nr
End Sub