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

Forumthread: vba-sql Verbindung zur Datenbank

vba-sql Verbindung zur Datenbank
11.07.2006 10:05:04
Caro
Hallo ihr lieben,
ich bin leider am verzweifeln und weiß nciht mehr weiter. ich hoffe, ihr könnt mir helfen:
folgendes problem: ich stelle in vba eine verbidnung zu einer datenbank her. also: passwort, user, server und treiber werden übergeben (verbindung, sprich der treiber und die einrichtung funktionieren auch, kann mich über anderen weg mit der datenbank verbinden) führe ich aber nun mein programm aus, bekomme ich folgende fehlermeldung:
laufzeitfehler 430
klasse unterstützt keine automatisierung oder unterstützt erwartete schnittstelle nicht.
hier nochmal ein kurzer ausschnitt aus meinem programm:

Public Function funcODBC(strUser As String, strPasswort As String, strDatenbank As String) As Variant
'Variablendeklaration
Dim conn As New ADODB.Connection
Dim str_conn As String
'ODBC-Verbindung zu welcher Datenbank, mit welchem User und welchen Passwort
str_conn = "Driver={Microsoft ODBC for Oracle};Server=strDatenbank;
Uid=strUser;Pwd=strPasswort;"
'Übergabe des String-Inhalts
conn.ConnectionString = str_conn
'Öffen der Connection
conn.Open
funcODBC = str_conn
End Function


Public Sub subSQLQuery()
str_conn = "Driver={Microsoft ODBC for Oracle};Server=xxx;Uid=xxx;Pwd=xxx;"
conn.ConnectionString = str_conn
conn.Open
command.ActiveConnection = str_conn (hier springt der debugger bei der fehlemeldung hin)
End Sub

lg
caro
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: vba-sql Verbindung zur Datenbank
11.07.2006 13:24:19
EtoPHG
Hallo Caro,
Ich bin zwar kein Interpreter oder Debugger, aber ich würde bei dem Befehl auch eine Fehlermeldung ausgeben, denn ich verstehe in schlicht nicht.
Was willst Du den mit command.ActiveConnection = str_conn erreichen ?
Gruss Hansueli
AW: vba-sql Verbindung zur Datenbank
11.07.2006 15:05:07
Caro
Hallo,
also ich muss zugestehen, dass ich den teil nciht selber programmiert habe. ich habe das zum teil übernommen. auf meinem pc läuft auch alles einwandfrei, sobald ich das aber auf einem anderen rechner ausführen möchte, bekomme ich die obige fehlermeldung.
lg
caro
Anzeige
AW: vba-sql Verbindung zur Datenbank
11.07.2006 16:36:45
EtoPHG
Hallo Caro,
Dann müsstest Du auf dem anderen PC mal überprüfen, ob:
a) die gleichen ODBC Treiber und Data-Sources installiert sind.
b) ebenfalls stimmen muss die Office-Excel-Installation, bezgl. der VBA Komponenten.
Gruss Hansueli
AW: vba-sql Verbindung zur Datenbank
12.07.2006 08:15:30
Caro
Hallo Hansueli,
die ODBC-Treiber stimmen auf dem anderen Rechner, ich kann über einen anderen Weg auf die Datenbank mit hilfe der treiber zugreifen. Die Excel-Installation ist ebenfalls die gleiche. Das einzige, was im Vergleich zu meinem Rechner der Unterschied ist, ist die Windows-Version. Kann das Problem darin liegen?
LG
caro
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Verbindung zu einer SQL-Datenbank mit VBA


Schritt-für-Schritt-Anleitung

Um eine Verbindung zu einer SQL-Datenbank in Excel mit VBA herzustellen, befolge diese Schritte:

  1. ODBC-Treiber installieren: Stelle sicher, dass die richtigen ODBC-Treiber installiert sind. Diese sind entscheidend, um Excel mit der Datenbank zu verbinden.

  2. VBA-Entwicklungsumgebung öffnen: Gehe in Excel auf Entwicklertools > Visual Basic, um die Entwicklungsumgebung zu öffnen.

  3. Modul erstellen: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei) > Einfügen > Modul.

  4. Code eingeben: Kopiere den folgenden Code in das Modul:

    Public Function funcODBC(strUser As String, strPasswort As String, strDatenbank As String) As Variant
       Dim conn As New ADODB.Connection
       Dim str_conn As String
       str_conn = "Driver={Microsoft ODBC for Oracle};Server=" & strDatenbank & ";Uid=" & strUser & ";Pwd=" & strPasswort & ";"
       conn.ConnectionString = str_conn
       conn.Open
       funcODBC = str_conn
    End Function
  5. Verbindung testen: Führe die Funktion funcODBC mit den entsprechenden Parametern aus, um die datenbank verbindung testen zu können.

  6. SQL-Abfrage durchführen: Nutze den folgenden Code, um eine SQL-Abfrage durchzuführen:

    Public Sub subSQLQuery()
       Dim conn As New ADODB.Connection
       Dim command As New ADODB.Command
       Dim str_conn As String
       str_conn = "Driver={Microsoft ODBC for Oracle};Server=xxx;Uid=xxx;Pwd=xxx;"
       conn.ConnectionString = str_conn
       conn.Open
       command.ActiveConnection = conn
       ' Hier kannst du deine SQL-Abfrage einfügen
    End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler 430: Dieser Fehler tritt auf, wenn die Klasse keine Automatisierung unterstützt. Überprüfe, ob die ODBC-Treiber auf dem anderen Rechner korrekt installiert sind.

  • Verbindung funktioniert nicht auf anderem PC: Stelle sicher, dass der andere PC die gleiche Version von Excel und die gleichen ODBC-Treiber verwendet. Unterschiede in der Windows-Version können ebenfalls Probleme verursachen.


Alternative Methoden

Wenn die ODBC-Methode nicht funktioniert, kannst du auch andere Methoden verwenden, um eine Verbindung zu einer SQL-Datenbank herzustellen, wie z.B.:

  • OLE DB: Diese Methode kann eine alternative Verbindung zu SQL-Datenbanken bieten und ist oft einfacher zu handhaben. Hier ein Beispiel:

    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    conn.ConnectionString = "Provider=SQLOLEDB;Data Source=ServerName;Initial Catalog=DatabaseName;User ID=User;Password=Password;"
    conn.Open
  • Microsoft Query: Du kannst auch Microsoft Query verwenden, um Daten direkt in Excel zu importieren, ohne VBA zu verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, um Excel mit einer SQL-Datenbank zu verbinden:

  1. Anmeldung und Datenabfrage:

    Sub GetData()
       Dim conn As New ADODB.Connection
       Dim rs As New ADODB.Recordset
       Dim str_conn As String
    
       str_conn = "Driver={SQL Server};Server=ServerName;Database=DatabaseName;Uid=User;Pwd=Password;"
       conn.Open str_conn
    
       rs.Open "SELECT * FROM TableName", conn
       ' Hier kannst du die Daten in Excel importieren
    
       rs.Close
       conn.Close
    End Sub
  2. Daten aus einer Tabelle hochladen:

    Sub UploadData()
       Dim conn As New ADODB.Connection
       Dim str_conn As String
    
       str_conn = "Driver={SQL Server};Server=ServerName;Database=DatabaseName;Uid=User;Pwd=Password;"
       conn.Open str_conn
    
       ' SQL INSERT-Anweisung hier hinzufügen
    
       conn.Close
    End Sub

Tipps für Profis

  • Fehlermeldungen protokollieren: Implementiere eine Logging-Funktion, um Fehlermeldungen zu protokollieren. Dies erleichtert das Debugging, wenn du versuchst, Excel mit einer Datenbank zu verbinden.

  • Verbindung sichern: Stelle sicher, dass du sensible Informationen, wie Passwörter, sicher behandelst und sie nicht im Code speicherst.

  • Verwende Parameter in SQL-Abfragen: Schütze deine SQL-Abfragen vor SQL-Injection, indem du Parameter verwendest.


FAQ: Häufige Fragen

1. Wie teste ich die Verbindung zu meiner Datenbank?
Du kannst die Funktion funcODBC verwenden, um die datenbank verbindung testen zu können. Führe die Funktion mit den entsprechenden Parametern aus.

2. Was ist der Unterschied zwischen ODBC und OLE DB?
ODBC ist ein Standard für den Zugriff auf Datenbanken, während OLE DB speziell für Microsoft-Anwendungen entwickelt wurde. OLE DB kann oft einfacher in VBA verwendet werden.

3. Warum funktioniert mein VBA-Code auf einem anderen PC nicht?
Überprüfe, ob die ODBC-Treiber und die Office-Installation auf dem anderen PC identisch sind. Unterschiede in der Windows-Version könnten ebenfalls zu Problemen führen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige