Excel Macro ODBC Abfrage
Hallo Experten!
Da ich nicht viel Ahnung davon habe, bitte ich Euch um Hilfe.
Ich suche nach eine Möglichkeit über ODBC aus unserer Warenwirtschaftsystem einige Daten in Excel einzulesen,
aber nur bestimmte Daten, also über ein Abfrage. Ich habe mir gedacht, dass es mit Makros und InputBox zu lösen wäre.
Ich habe ein Makro gebastelt, das mir aber alle Daten ausliest und ich komme nicht weiter und sobald ich WHERE-Abfrage einbaue bekomme ich Fehlermeldung.
Makro ohne WHERE (InputBox ist hier natürlich ohne Wirkung):
Makro mit WHERE und InputBox (Fehler an .Refresh)
Kann mir jemand helfen, ich habe da wirklich nicht so viel Ahnung.
Ich bedanke mich im Voraus!
Da ich nicht viel Ahnung davon habe, bitte ich Euch um Hilfe.
Ich suche nach eine Möglichkeit über ODBC aus unserer Warenwirtschaftsystem einige Daten in Excel einzulesen,
aber nur bestimmte Daten, also über ein Abfrage. Ich habe mir gedacht, dass es mit Makros und InputBox zu lösen wäre.
Ich habe ein Makro gebastelt, das mir aber alle Daten ausliest und ich komme nicht weiter und sobald ich WHERE-Abfrage einbaue bekomme ich Fehlermeldung.
Makro ohne WHERE (InputBox ist hier natürlich ohne Wirkung):
Sub Makro1()
Dim bestellung As String
bestellung = InputBox("Bestellnummer")
sqlstring = "SELECT BestellungenPositionen.Artikelnummer, BestellungenPositionen.Artikelbezeichnung1, BestellungenPositionen.Bestellmenge FROM BestellungenPositionen"
connstring = "ODBC;DSN=Sage SNC"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("B15"), Sql:=sqlstring)
.Refresh
End With
End Sub
Makro mit WHERE und InputBox (Fehler an .Refresh)
Sub Makro1()
Dim bestellung As String
bestellung = InputBox("Bestellnummer")
sqlstring = "SELECT BestellungenPositionen.Artikelnummer, BestellungenPositionen.Artikelbezeichnung1, BestellungenPositionen.Bestellmenge FROM BestellungenPositionen WHERE BestellungenPositionen.Vorgangsnummer = " 'bestellung' ""
connstring = "ODBC;DSN=Sage SNC"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("B15"), Sql:=sqlstring)
.Refresh
End With
End Sub
Kann mir jemand helfen, ich habe da wirklich nicht so viel Ahnung.
Ich bedanke mich im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 300366
Url: https://administrator.de/contentid/300366
Ausgedruckt am: 19.11.2024 um 19:11 Uhr
7 Kommentare
Neuester Kommentar
Moin.
Zeichensetzung und Verknüpfung der Variablen ist nicht korrekt:
Gruß jodel32
Zeichensetzung und Verknüpfung der Variablen ist nicht korrekt:
sqlstring = "SELECT BestellungenPositionen.Artikelnummer, BestellungenPositionen.Artikelbezeichnung1, BestellungenPositionen.Bestellmenge FROM BestellungenPositionen WHERE BestellungenPositionen.Vorgangsnummer = '" & bestellung & "';"
Bin noch unterwegs und kann es nicht testen, aber von welchen Format/Typ ist die Spalte für die Bestellnummer (String oder Integer etc.) ?
Wenn sie numerisch ist solltest du die Hochkommas im WHERE Clause weglassen.
Und natürlich sollte im Destination Range nicht schon eine Querytable und eine Verbindung existieren, da sonst Fehler generiert werden! Die sollten vorher komplett gelöscht werden, denn Querytable-Verbindungen speichert Excel intern.(Tab Daten)
Wenn sie numerisch ist solltest du die Hochkommas im WHERE Clause weglassen.
Und natürlich sollte im Destination Range nicht schon eine Querytable und eine Verbindung existieren, da sonst Fehler generiert werden! Die sollten vorher komplett gelöscht werden, denn Querytable-Verbindungen speichert Excel intern.(Tab Daten)
Naja, die Verbindung einer Querytable wird als Definition in der Excel-Mappe gespeichert. Die bereits existierenden Verbindungen kannst du wie gesagt auf dem Tab Daten einsehen. Wenn im Zielbereich nun schon eine Querytable existiert und man diesen Bereich bzw. die existierende Querytable nicht vorher löscht oder stattdessen dereen Quelle ändert, ist es doch klar das es zu einem Fehler kommt