Hallo,

also hier wäre ein Beispiel von mir, das funktioniert (das ist hier nur eine fiktive SQL-Anweisung). Die Variable "firma" wird aus einer Excel-Zelle gefüllt.

Der Benutzername und das Kennwort kann hier direkt mitgegeben werden. Ich arbeite viel lieber mit diesen kleinen VBAs als mit DQY-Dateien, da ich damit wesentlich flexibler bin. Ich kann hier z.B. über weitere Module das Tabellenblatt entsprechend vorbereiten bzw. die Ausgabe nachträglich formatieren.

Gruß,
KM

Code:
Sub Artikelzusatztexte()

' Variablen definieren
Dim firma As Variant
Dim sql As String
Dim qt As QueryTable

firma = Range("B1").Text

' SQL-Abfrage auf der AS/400 vorbereiten
sql = "select blabla "
sql = sql & "from artstamm "
sql = sql & "where finr = " & firma & " "
sql = sql & "order by artn"

' Tabellenblatt für Ergebnisliste vorbereiten
Ergebnisliste_vorbereiten

' Abfrage auf der AS/400 ausführen und Ergebnisliste füllen
Set qt = ActiveSheet.QueryTables.Add(Connection:=Array( _
        "ODBC;DRIVER={iSeries Access ODBC Driver};CONNTYPE=2;TRANSLATE=1;CMT=0;PKG=QGPL/DEFAULT(IBM),2,0,1,0,512;LANGUAGEID=ENU;DFTPKGLIB=QGPL;DBQ=LIB;SYSTEM=ISERIES;UID=Benutzername;PWD=Kennwort;BLOCKFETCH=1;BLOCKSIZE=512"), Destination:=Range("A2"))
qt.CommandText = sql
qt.Name = "Artikelzusatztexte"
qt.FieldNames = False
qt.RowNumbers = False
qt.FillAdjacentFormulas = True
qt.PreserveFormatting = True
qt.RefreshOnFileOpen = False
qt.BackgroundQuery = False
qt.RefreshStyle = xlInsertDeleteCells
qt.SavePassword = True
qt.SaveData = True
qt.AdjustColumnWidth = False
qt.RefreshPeriod = 0
qt.PreserveColumnInfo = True
qt.Refresh

End Sub