Wie kann man MySQL und Excel miteinander Verbinden. Wichtig ist das Aus- Einlesen von Daten nachdem sie durch ein Excelmakro gelaufen sind?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Das Auslesen von Datenbanken geht recht simpel über eine OLE-DB oder ODBC DNS in Excel (2010):

Datenquelle anlegen:

Treiber gibt es z. B. hier: https://dev.mysql.com/downloads/connector/odbc/5.3.html

[Win]Datenquellen[Enter] → Benutzer-DSN → Hinzufügen... → MySQL ODBC 5.3 Unicode Driver

Connection Parameters:

DSN: MySQL Test
Named Pipe: MySQL
User: root
Database: test

[TEST]→[OK]

In Excel:

Daten → Aus anderen Quellen → Vom Daten-Verbindungsassistenten → ODBC DSN → MySQL Test → Testtabelle → [OK]

_______________________

Das Schreiben in eine Datenbank funktioniert meines Wissens nur mit den VSTO. Ist etwas komplexer. Musst dich mal schlau machen.


Suboptimierer  26.04.2016, 18:39

Speichern geht auch ohne VSTO mittels VBA. Ich habe das gerade getestet:

Sub DBWriteTest()
  https://www.gutefrage.net/frage/wie-kann-man-mysql-und-excel-miteinander-verbinden-wichtig-ist-das-aus--einlesen-von-daten-nachdem-sie-durch-ein-excelmakro-gelaufen-sind?foundIn=notification-center#answer-20354107979

  ' MySQL Datenbank
  ' DB-Name: test
  ' Tabelle: befugtewaehler
  ' ODBC-https://dev.mysql.com/downloads/connector/odbc/5.3.html/5.3.html

Dim oConn As ADODB.Connection Dim oRS As ADODB.Recordset
Set oConn = New ADODB.Connection Set oRS = New ADODB.Recordset oRS.CursorLocation = adUseClient oRS.CursorType = adOpenStatic oRS.LockType = adLockOptimistic
' Die DSN wurde mittels [Win]Datenquellen[Enter] angelegt oConn.Open "Provider=MSDASQL;DSN=MySQL Test" oRS.Open "SELECT * FROM befugtewaehler WHERE Umfragename = 1 and UserID = 2", oConn
If Not oRS.EOF Then Debug.Print oRS.Fields(0).Value & " " & oRS.Fields("UserID").Value oRS.Fields("Auswahl").Value = oRS.Fields("Auswahl").Value + 1 oRS.Update End If
oRS.Close oConn.Close
Set oConn = Nothing Set oRS = Nothing End Sub
Suboptimierer  27.04.2016, 11:46
@Suboptimierer

PS:  Hinzuzufügende Verweise (in VBA):

  • Microsoft ActiveX Data Objects 6.1 Library 
  • Microsoft ActiveX Data Objects Recordset 6.0 Library

Vielen Dank für die Antwort

Es handelt sich dabei um ein Projekt für die Uni.

Wir haben einen Webserver und einzelne Gruppen, die ihre Berechnungen anstellen und diese auf dem Server abspeichern. Ich benötige einen Wert aus der Datenbank. Diesen Wert möchte ich gerne aus der Datenbank in meine Exceldatei ziehen und damit meine Berechnungen anfertigen. Am ende ist wieder nur einer meiner Werte für andere Gruppen interessant. Diesen einen Wert muss ich im Anschluss wieder in die DB schreiben.

Das ganze sollte einmal pro Stunde passieren, da es sich um echtzeitdaten handelt.

Hinsichtlich Einlesen nach Excel: Ribbon Daten -> Externe Daten abrufen: "aus andere Quellen". Hier gibt es SQL Server, was meiner Erfahrung nach auch funktioniert - der Teufel steckt im Detail.

Die Reihenfolge ist mir aber noch nicht ganz klar, Du willst Einlesen nachdem die durch ein Makro bearbeitet wurden oder steht das da nur missverständlich?

Hinsichtlich Rückweg aus Excel nach SQL kann ich mangels eigener Erfahrung nix beitragen.


IamSherlock 
Beitragsersteller
 26.04.2016, 14:58

Vielen Dank für die Antwort

Es handelt sich dabei um ein Projekt für die Uni.

Wir haben einen Webserver und einzelne Gruppen, die ihre Berechnungen anstellen und diese auf dem Server abspeichern. Ich benötige einen Wert aus der Datenbank. Diesen Wert möchte ich gerne aus der Datenbank in meine Exceldatei ziehen und damit meine Berechnungen anfertigen. Am ende ist wieder nur einer meiner Werte für andere Gruppen interessant. Diesen einen Wert muss ich im Anschluss wieder in die DB schreiben.

Das ganze sollte einmal pro Stunde passieren, da es sich um echtzeitdaten handelt.

Ich habe eine relativ große Exceltabelle in der eine Menge Berechnungen ablaufen. Bestimmte Daten beziehe ich dabei von einem Webserver und nach meinen Berechnungen muss ich relevante Daten auf den Server schreiben. Die Datenbank ist eine MySQL Datenbank. Funktioniert das Ein- Auslesen problemlos? und wenn ja wie?

Ich bedanke mich im Voraus