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

Forumthread: VBA Script zum Zugriff auf MYSQL Datenbank mit ado

VBA Script zum Zugriff auf MYSQL Datenbank mit ado
30.09.2015 13:59:06
Ingo
Grüß Gott,
ich habe mir ein Svript angepasst, welches mir einen Datnsatz in eine MYSQL Datenbank über ADO einträgt:
Private Sub CommandButton1_Click()
' PLEASE DO THE FOLLOWING BEFORE EXECUTING CODE:
' 1)In VBE you need to go Tools/References and check Microsoft Active X Data Objects 2.x  _
library
' 2)Install MySQL ODBC 3.51 Driver. See dev.mysql.com/downloads/connector/odbc/3.51.html or  _
_
_
google "MySQL ODBC 3.51 Driver"
Dim conn As New ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
& ";SERVER=" & "server" _
& ";DATABASE=" & "exceltest" _
& ";UID=" & "exceltester" _
& ";PWD=" & "xxx" _
& ";OPTION=16427" ' Option 16427 = Convert LongLong to Int: This just helps makes sure that  _
_
_
large numeric results get properly interpreted
SQLStr = "INSERT INTO exceltest.excel (name) VALUES('yeah;');"
conn.Execute SQLStr
conn.Close
Set conn = Nothing
MsgBox "done"
End Sub

Dieser Quelltext funktioniert auch und trägt einen neuen Datensatz mit dem Namen yeah in die Datenbank.
Jetzt bin ich dabei eine Abfrage zu gestalten, welche mir Daten aus einer MYSQL-Datenbank in Excel anzeigt. Dies ist mein bisheriger Versuch, auf Basis des INSERT Eintrag von oben, der ja schon funktioniert:
Private Sub CommandButton1_Click()
' PLEASE DO THE FOLLOWING BEFORE EXECUTING CODE:
' 1)In VBE you need to go Tools/References and check Microsoft Active X Data Objects 2.x  _
library
' 2)Install MySQL ODBC 3.51 Driver. See dev.mysql.com/downloads/connector/odbc/3.51.html or  _
_
_
google "MySQL ODBC 3.51 Driver"
Dim conn As New ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
& ";SERVER=" & "server" _
& ";DATABASE=" & "exceltest" _
& ";UID=" & "exceltester" _
& ";PWD=" & "xxx" _
& ";OPTION=16427" ' Option 16427 = Convert LongLong to Int: This just helps makes sure that  _
_
_
large numeric results get properly interpreted
sql = "SELECT * From exceltest.excel;"
Set rs = conn.Execute(sql)
' output to sheet named "Tabelle2"
Dim i as Long
i = 2 ' start at row 2 as the headers will be on row 1
Sheets("Tabelle2").Activate
ActiveSheet.Cells(1,1).Value = "Name"
Do While Not rs.EOF
With ActiveSheet
.Cells(i, 1).Value = rs.Fields(0).Value
End With
i = i + 1 ' move to the next row
Loop
rs.Close
conn.Close
Set conn = Nothing
MsgBox "done"
End Sub

Dieser Quelltext trägt mir auch den Namen (überschrift) und in einer Endlosschleife den ersten Datnsatz den er in MYSQL findet untereinander in die Spalte A ein. Bis auf die Endlosschleife bin ja schon ziemlich zufrieden, aber wie bekomme ich diese nur weg?
Vielen Dank für jeden Tipp
Ingo

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Script zum Zugriff auf MYSQL Datenbank mit ado
30.09.2015 14:42:11
Born
Hi Ingo,
in Deiner While-Schleife musst Du das rs.Objekt auch um 1 erhöhen. Kann gerade nicht in meine Beispiele reinschauen. Wenn ich mich recht erinnere, ging es mit rs.MoveNext.
Gruß,
M. Born

AW: VBA Script zum Zugriff auf MYSQL Datenbank mit ado
30.09.2015 15:06:54
Ingo
Super; Vielen lieben Dank; genau .movenext hat gefehlt;
dann fehlt mal nur noch ein Update:)
Ich werde mal mit diesem Ansatz arbeiten:
'rs update
rs.Open "SELECT * FROM my_ado"
rs!Name = "update"
rs!txt = "updated-row"
rs.Update
rs.Close
Wobei das SQL-Query dann ja sinnvollerweise eine where Abfrage auf Basis eines Primärschlüssels durchführen sollte, denke ich...
Einen entspannten RestMittwoch
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf MySQL-Datenbank mit VBA und ADO in Excel


Schritt-für-Schritt-Anleitung

Um Excel mit einer MySQL-Datenbank über ADO zu verbinden, folge diesen Schritten:

  1. VBA-Referenzen aktivieren:

    • Öffne den Visual Basic Editor (VBE) in Excel.
    • Gehe zu Extras > Verweise und aktiviere die Microsoft ActiveX Data Objects 2.x Library.
  2. MySQL ODBC-Treiber installieren:

  3. VBA-Code zur Verbindung mit MySQL:

    • Verwende den folgenden Code, um eine Verbindung zu deiner MySQL-Datenbank herzustellen und Daten zu übertragen:
Private Sub CommandButton1_Click()
    Dim conn As New ADODB.Connection
    conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=server;DATABASE=exceltest;UID=exceltester;PWD=xxx;OPTION=16427"

    ' Daten einfügen
    Dim SQLStr As String
    SQLStr = "INSERT INTO exceltest.excel (name) VALUES('yeah');"
    conn.Execute SQLStr

    conn.Close
    Set conn = Nothing
    MsgBox "done"
End Sub
  1. Daten abfragen:
    • Um Daten aus der MySQL-Datenbank zu lesen, kannst du folgenden Code verwenden:
Private Sub CommandButton1_Click()
    Dim conn As New ADODB.Connection
    conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=server;DATABASE=exceltest;UID=exceltester;PWD=xxx;OPTION=16427"

    Dim rs As Object
    Set rs = conn.Execute("SELECT * FROM exceltest.excel;")

    Dim i As Long
    i = 2 ' Starte bei Zeile 2
    Sheets("Tabelle2").Cells(1, 1).Value = "Name"

    Do While Not rs.EOF
        Sheets("Tabelle2").Cells(i, 1).Value = rs.Fields(0).Value
        rs.MoveNext ' Nächster Datensatz
        i = i + 1
    Loop

    rs.Close
    conn.Close
    Set conn = Nothing
    MsgBox "done"
End Sub

Häufige Fehler und Lösungen

  • Fehler: Daten werden nicht angezeigt:

    • Überprüfe, ob die SQL-Abfrage korrekt ist und ob du die richtigen Berechtigungen für den Zugriff auf die Datenbank hast.
  • Fehler: Endlosschleife:

    • Stelle sicher, dass du rs.MoveNext innerhalb der Schleife verwendest, um zum nächsten Datensatz zu wechseln.

Alternative Methoden

Eine alternative Methode, um die Verbindung zu einer MySQL-Datenbank herzustellen, ist die Verwendung des MySQL-Connectors für Excel. Dieser erlaubt eine einfachere Integration ohne VBA und kann direkt im Excel-Menü verwendet werden.


Praktische Beispiele

  1. Daten einfügen:

    • Verwende den oben genannten VBA-Code, um Daten in die MySQL-Datenbank einzufügen.
  2. Daten abfragen:

    • Der zweite VBA-Code liest sämtliche Daten aus der angegebenen Tabelle und zeigt sie in einem Excel-Blatt an.

Tipps für Profis

  • Benutzung von Parameterabfragen:

    • Um SQL-Injection zu vermeiden, nutze Parameterabfragen in VBA.
  • Fehlerbehandlung:

    • Implementiere Fehlerbehandlung in deinem VBA-Code, um Probleme beim Datenzugriff zu erkennen und zu beheben.

FAQ: Häufige Fragen

1. Welche Excel-Version benötige ich für ADO und MySQL?
Du kannst ADO in Excel 2007 und neueren Versionen verwenden.

2. Wie kann ich große Datenmengen effizient abfragen?
Verwende LIMIT und OFFSET in deiner SQL-Abfrage, um die Daten in kleineren Paketen zu verarbeiten.

3. Was ist der Unterschied zwischen ADO und DAO?
ADO ist flexibler und eignet sich besser für die Verbindung zu externen Datenquellen wie MySQL, während DAO besser für lokale Datenbanken wie Access 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