Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per VBA in MySQL-Tabelle schreiben

per VBA in MySQL-Tabelle schreiben
André
Moin,
ich hätte da mal wieder ein Problem.
Daten aus einer MySQL-Datenbank bekomme ich problemlos in meine Excel-Tabellen. Dies bekomme ich auch per VBA gesteuert. Hierzu habe ich eine ODBC-Verbindung erstellt. In der Excel-Tabelle erstelle ich dann eine neue Datenverbindung, die ich dann per VBA steuern kann (z.B. den SQL-String anpassen).
Wie aber kann ich in die MySQL-Datenbank schreiben?
Wenn ich in Excel eine neue Datenverbindung erstelle, und dabei als SQL-Befehl z.B. einen INSERT eingebe, bekomme ich von Excel die Fehlermeldung
Die Abfrage oder das Öffnen der Tabelle konnte nicht ausgeführt werden.
Prüfen Sie den Datenbankserver oder kontaktieren Sie Ihren Datenbankadministrator.
Vergewissern Sie sich, dass die externe Datenbank verfügbar ist, und nicht
verschoben bzw. umorganisiert wurde.
Wiederholen Sie anschließend den Vorgang.
Die Fehlermeldung kommt sicherlich dadurch zustande, daß bei dem INSERT ja keine Daten zurückgegeben werden.
Wie sieht also der VBA-Code aus, mit dem ich über eine ODBC-Verbindung einen Datensatz in eine MYSQL-Tabelle schreiben kann? Google und die Forensuche haben mich leider nicht weitergebracht.
Gruß, André
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: per VBA in MySQL-Tabelle schreiben
20.04.2010 14:29:30
Sönke
Entweder Du hast mit dem genutzen User keine Schreibrechte oder dein SQL-Statement ist fehlerhaft.
schreib mal die Connection hier rein und den SQL.
Sönke
AW: per VBA in MySQL-Tabelle schreiben
20.04.2010 15:20:10
André
Hallo Sönke,
die Connection ist sicherlich richtig. Denn der INSERT wird sogar noch durchgeführt. Soll heißen, trotz der Excel-Fehlermeldung steht der Datensatz in der DB drin.
Mache ich aus dem INSERT einen SELECT, funktioniert das ganze auch ohne Fehlermeldung.
Gruß, André
Anzeige
AW: per VBA in MySQL-Tabelle schreiben
20.04.2010 16:14:38
Sönke
Hi André,
vielleicht die Connection nicht geschlossen?
poste mal das Coding dazu, sonst schaut man nur in die berühmte Glaskugel.
AW: per VBA in MySQL-Tabelle schreiben
21.04.2010 08:43:26
coachyou
Hallo André,
benutzt Du ein recordset.open "Insert ..."?
Dann ersetze das durch connection.execute "Insert ..."
Recordset/Connection bitte durch Deine Object-Variablen ersetzen.
Gruß Coach
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten in eine MySQL-Tabelle von Excel aus schreiben


Schritt-für-Schritt-Anleitung

Um Daten aus Excel in eine MySQL-Datenbank zu schreiben, benötigst du eine funktionierende ODBC-Verbindung und den entsprechenden VBA-Code. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. ODBC-Verbindung einrichten:

    • Gehe zu den ODBC-Datenquellen auf deinem Computer (Systemsteuerung > Verwaltung > ODBC-Datenquellen).
    • Füge eine neue Datenquelle hinzu und konfiguriere sie für deine MySQL-Datenbank.
  2. VBA-Editor öffnen:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Verbindung zur Datenbank herstellen:

    • Verwende den folgenden Code, um eine Verbindung zu deiner MySQL-Datenbank herzustellen:
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    conn.ConnectionString = "Driver={MySQL ODBC 8.0 Driver}; Server=YOUR_SERVER; Database=YOUR_DATABASE; User=YOUR_USER; Password=YOUR_PASSWORD;"
    conn.Open
  4. SQL-Befehl zum Einfügen von Daten:

    • Ersetze den Platzhalter in der SQL-Anweisung durch die tatsächlichen Werte, die du einfügen möchtest:
    Dim sql As String
    sql = "INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')"
    conn.Execute sql
  5. Verbindung schließen:

    • Schließe die Verbindung nach dem Einfügen der Daten:
    conn.Close
    Set conn = Nothing

Häufige Fehler und Lösungen

  • Fehlermeldung: "Die Abfrage oder das Öffnen der Tabelle konnte nicht ausgeführt werden."

    • Lösung: Diese Fehlermeldung kann auftreten, wenn du versuchst, einen INSERT-Befehl in einer Abfrage zu verwenden. Stelle sicher, dass du conn.Execute anstelle von recordset.Open verwendest.
  • Schreibrechte: Wenn die Daten nicht in die MySQL-Datenbank geschrieben werden können, überprüfe, ob der verwendete Benutzer Schreibrechte hat.


Alternative Methoden

Eine alternative Methode, um Excel-Daten in eine SQL-Datenbank zu übertragen, ist die Verwendung von Power Query. Hierbei kannst du Daten aus Excel exportieren, ohne VBA verwenden zu müssen. Power Query bietet eine benutzerfreundliche Oberfläche, um Daten zu transformieren und in eine MySQL-Datenbank zu laden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine Excel-Tabelle in eine MySQL-Datenbank schreiben kannst:

Angenommen, du hast eine Tabelle mit den Spalten Name und Alter. Der VBA-Code könnte so aussehen:

Sub DatenInMySQLSchreiben()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    conn.ConnectionString = "Driver={MySQL ODBC 8.0 Driver}; Server=YOUR_SERVER; Database=YOUR_DATABASE; User=YOUR_USER; Password=YOUR_PASSWORD;"
    conn.Open

    Dim sql As String
    sql = "INSERT INTO users (Name, Alter) VALUES ('Max', 30)"
    conn.Execute sql

    conn.Close
    Set conn = Nothing
End Sub

Tipps für Profis

  • Achte darauf, dass du immer die Verbindung nach dem Schreiben der Daten schließt, um Ressourcen freizugeben.
  • Verwende Transaktionen, um sicherzustellen, dass alle Daten korrekt geschrieben werden oder im Falle eines Fehlers zurückgerollt werden können.
  • Teste deinen SQL-Befehl in einem MySQL-Client, bevor du ihn in VBA implementierst, um sicherzustellen, dass er korrekt funktioniert.

FAQ: Häufige Fragen

1. Kann ich auch mehrere Datensätze auf einmal einfügen?
Ja, du kannst mehrere Datensätze in einer einzigen SQL-Anweisung einfügen, indem du die VALUES-Klausel entsprechend erweiterst:

sql = "INSERT INTO users (Name, Alter) VALUES ('Max', 30), ('Anna', 25)"

2. Was ist der Unterschied zwischen conn.Execute und recordset.Open?
conn.Execute wird verwendet, um SQL-Befehle auszuführen, die keine Rückgabewerte benötigen (wie INSERT, UPDATE, DELETE), während recordset.Open für SELECT-Abfragen gedacht ist, bei denen Daten zurückgegeben werden.

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