Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Externe Daten per VBA abfragen

Forumthread: Externe Daten per VBA abfragen

Externe Daten per VBA abfragen
13.05.2002 11:41:12
OleL
Hallo!

Ich habe eine Oracle-Datenbank, die ich via ODBC mit Excel auslese, um damit Diagramme und anderes zu erstellen.

Nun möchte ich aber die Abfrage nicht statisch über Daten -> Externe Daten > Neue Abfrage erstellen... erstellen, sondern möchte dies per VBA-Code tun.

Ich habe mir bereits ein UserForm erstellt, in dem man ein paar Parameter einstellen kann. Wenn man dann in diesem UserForm auf OK drückt, soll die Abfrage erstellt und das Ergebnis in eine neue Tabelle geschrieben werden.

Kann mir jemand sagen, wie das geht? Ich denke, da müsste man irgendwie einen SQL-Befehl zusammenschustern und den dann irgendwo hinschicken. Nur wohin??

Ich bin für jed Hilfe dankbar!

Gruß,
Ole

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Externe Daten per VBA abfragen
13.05.2002 11:49:37
Walerij Riffel
Hallo OleL,

hier a Beispiel:

Activesheet.QueryTables.Add(Connection="ODBC;DSN=x;UID=x;PWD=x;Database=x", Destination:=Range("A1"), SQL:=strSQL).Refresh BackgroundQuey=True

und im SQL String mußt du die Tabelle angeben und alles was du dazu brauchst.

MfG

Walerij Riffel

Re: Externe Daten per VBA abfragen
13.05.2002 12:49:06
OleL
Hallo Walerij,

Wenn ich deinen Code ausführe, bekomme ich folgende Fehlemeldung:
"Laufzeitfehler '5': Unzulässiger Prozeduraufruf oder ungültiges Argument"

Muss ich noch irgendetwas drumherum beachten? Irgendwas initialisieren oder öffnen oder so? Eigentlich doch nicht, oder?

Wie sind denn die Werte für die Attribute DSN und Database? Ich habe da jetzt den Namen der System-DSN genommen, so wie er im ODBC-Datenquellen-Administrator steht und auch entsprechend den Eintrag aus 'database' als Wert für das Attribut Database.
Mein sql-Befehl sieht wie folgt aus:
"SELECT * FROM pdalle",
wobei pdalle der Name der Tabelle ist.

Kannst Du da irgendwo einen Fehler erkennen oder hast sonst einen Tipp, was bei mir noch falsch läuft?

Danke und Gruß,
Ole

Anzeige
Anzeige

Infobox / Tutorial

Externe Daten per VBA abfragen in Excel


Schritt-für-Schritt-Anleitung

Um externe Daten per VBA aus einer Oracle-Datenbank zu lesen und in Excel darzustellen, folge diesen Schritten:

  1. ODBC-Datenquelle einrichten: Stelle sicher, dass du eine funktionierende ODBC-Verbindung zu deiner Oracle-Datenbank hast. Dies kannst du im ODBC-Datenquellen-Administrator überprüfen.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. UserForm erstellen: Füge ein UserForm hinzu, in dem der Benutzer die erforderlichen Parameter eingeben kann.

  4. VBA-Code schreiben: Füge den folgenden Code in das UserForm ein:

    Private Sub btnOK_Click()
       Dim strSQL As String
       Dim conn As String
    
       ' SQL-Statement definieren
       strSQL = "SELECT * FROM pdalle"
    
       ' ODBC-Verbindungsstring
       conn = "ODBC;DSN=deinDSN;UID=deinBenutzername;PWD=deinPasswort;"
    
       ' Abfrage ausführen
       ActiveSheet.QueryTables.Add(Connection:=conn, Destination:=Range("A1"), SQL:=strSQL).Refresh BackgroundQuery:=True
    End Sub
  5. Parameter anpassen: Ersetze deinDSN, deinBenutzername und deinPasswort mit den entsprechenden Werten deiner Datenbank.

  6. UserForm testen: Starte das UserForm und klicke auf "OK", um die Daten abzufragen.


Häufige Fehler und Lösungen

  • Laufzeitfehler '5': Dieser Fehler tritt oft auf, wenn die Verbindung zu deiner Datenbank nicht richtig eingerichtet ist. Überprüfe, ob die DSN korrekt ist und ob du die benötigten Berechtigungen hast.

  • Ungültiger SQL-Befehl: Stelle sicher, dass dein SQL-Befehl korrekt ist. Überprüfe die Tabellennamen und Syntax.

  • ODBC-Treiber fehlt: Vergewissere dich, dass der benötigte ODBC-Treiber für Oracle installiert ist.


Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die integrierten Funktionen von Excel verwenden:

  1. Daten abrufen: Gehe zu Daten > Daten abrufen > Aus Datenbank > Aus ODBC.
  2. Prüfe deine Verbindung: Wähle die DSN aus und gib die Anmeldedaten ein.
  3. Daten laden: Wähle die Tabelle aus und lade sie in das Excel-Blatt.

Praktische Beispiele

Angenommen, du möchtest die Daten aus der Tabelle pdalle abfragen:

strSQL = "SELECT * FROM pdalle WHERE Status='Aktiv'"

Das obige Beispiel zeigt, wie du nur aktive Datensätze abfragen kannst.


Tipps für Profis

  • SQL-Optimierung: Verwende spezifische WHERE-Klauseln, um die Menge der abgerufenen Daten zu reduzieren, was die Performance verbessert.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme elegant zu behandeln:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Fehler: " & Err.Description
  • Hintergrundabfragen: Setze BackgroundQuery:=False, wenn du sicherstellen möchtest, dass die Abfrage vollständig abgeschlossen ist, bevor Excel fortfährt.


FAQ: Häufige Fragen

1. Kann ich andere Datenquellen verwenden?
Ja, du kannst auch andere Datenquellen wie SQL Server oder MySQL mit ähnlichen ODBC-Einstellungen abfragen.

2. Wie kann ich die Daten automatisch aktualisieren?
Du kannst die Abfrage in regelmäßigen Abständen automatisch aktualisieren lassen, indem du die Abfrageeigenschaften anpasst.

3. Funktioniert das in Excel 2016 und 2019?
Ja, der beschriebene VBA-Code funktioniert in Excel 2016 und 2019. Achte darauf, dass die ODBC-Verbindung korrekt eingerichtet ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige