Verwenden von Excel zum Lesen und Schreiben einer externen Datenbank

Jetzt teilen:

Excel kann praktisch alles; ob es gemacht werden sollte, um alles zu tun, ist eine andere Sache. Während die Tabelle beim Bearbeiten von Daten sehr leistungsfähig ist, ist sie beim Speichern normalisierter Daten nicht besonders gut. Nutzung von Excel zu einer relationalen Datenbank wie SQL Server Verbessert die Leistung der Anwendung.

Zu starMit benötigen Sie MS Access oder das stabilere und kostenlosere - SQL Server Ausdrücken. Es wird davon ausgegangen, dass dem Leser das Excel Developer-Menüband angezeigt wird und er mit dem VBA-Editor und der SQL-Struktur (Structured Query Language) vertraut ist. Dieser Artikel verwendet SQL Server Verbindungszeichenfolgen. Informationen zu MS-Access finden Sie bei Google.

Während Excel über eigene integrierte Routinen verfügt, von denen Informationen abgerufen werden können SQL Server In (z. B.) einer Pivot-Tabelle bietet unser Beispiel mehr Flexibilität bei der Datenauswahl.

Verbindungszeichenfolge

Ich werde eine private Datenbank verwenden. Fügen Sie Ihre eigenen Treiberinformationen anstelle meiner in die ConnectDatabase-Subroutine ein. Wir verwenden dann connDB als Kommunikationskanal zu unserer Datenbank - in meinem Fall, um Ergebnisse einer gespeicherten Prozedur zurückzugeben. Sie können mehr Standard-SQL-Anweisungen wie "Select * from ..." verwenden.

Geschäftsordnung

Zuerst laden wir Kombinationsfelder aus SQL Server Wenn die Arbeitsmappe geöffnet wird, verwenden Sie ein Auto_open-Makro und legen Sie es im Blatt „ComboData“ ab. Unabhängig davon, ob sich der Server in der Cloud oder lokal befindet, tritt in s keine Verzögerung auftarExcel - solange auf die Datenbank von der Workstation aus zugegriffen werden kann.

Als nächstes extrahieren wir gefilterte Daten aus der Datenbank und legen sie in Excel ab, Spalten F bis K.

Die Schnittstelle

Meins hat Dropdown-Felder, um Informationen aus der Datenbank zu filtern. Das Funktion / Rolle (Role) * Das Kombinationsfeld löst eine Suche aus, um die Tabelle rechts zu füllen.Das Kombinationsfeld "Rolle" löst eine Suche zum Auffüllen der Tabelle aus

Benennen Sie "Sheet1" in "Main" um. Fügen Sie mindestens eine Combobox hinzu.

Der Code des Chamäleons

Public connDB As New ADODB.Connection
Public rstNew As New ADODB.Recordset
Public rs As New ADODB.Recordset
Public strSQL As String
Public nID As Integer

Sub auto_Open()
    Call PopulateComboData     'kicks off the first process  on Open
End Sub

Sub PopulateComboData()
    Sheets("ComboData").Range("A3:C100").ClearContents
    Call ConnectDatabase      'use the ConnectDatabase routine
    strSQL = "Select DeptID, Department, Phase from tblDept Order by Department"
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("A3").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ReadData()
    intRole = Sheets("main").Range("D7")
    Sheets("Main").Range("F4:L100").ClearContents
    Call ConnectDatabase
    strSQL = "EXEC DBTest " & intRole    'calls a stored proc with parameter
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("F4").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ConnectDatabase()
    On Error GoTo ErrConnect
    If connDB.State = 1 Then connDB.Close     'closes connection if already open
    strServer = "197.200.28.164" 
    strDBase = "Qcrew_sql"
    strUser = "joesoap_sql"
    strPWD = "frU6ra!@"
    If strPWD > "" Then 
        strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & _
        ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & _
        ";Connection Timeout=30;"
    Else        'Use windows authentication
        strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & _
        ";Trusted_Connection=yes;DATABASE=" & strDBase
    End If
    connDB.Open strConnectionstring
Exit Sub
ErrConnect:
    MsgBox Err.Description
End Sub

Formatieren Sie das Kombinationsfeld-Steuerelement so, dass die Blätter „ComboData“ gelesen werden. Klicken Sie dann mit der rechten Maustaste auf das Kombinationsfeld, um ihm die Unterprozedur ReadData zuzuweisen. Wenn ein Element in der Combobox ausgewählt ist, schreiben Sie seinen Schlüssel in das Blatt „Main“, Zelle D7. Der VBA-Code verwendet diesen Schlüssel als Filter (siehe intRole oben).

Verweise auf dll library

Verwenden Sie im Codefenster Extras> Verweise, um auf die Microsoft Active X Data Objects-Bibliothek zu verweisenrary. Dadurch kann Excel die im Code deklarierten ADODB-Objekte verwenden.Referenz Die Microsoft Active X-Datenobjektbibliothekrary

Die obige ReadData-Subroutine verwendet eine unten gezeigte relationale Datenstruktur, die allein in Excel nur schwer zu erreichen ist.Die ReadData-Subroutine verwendet eine relationale Datenstruktur

Weitere Datenänderungen können ein Zurückschreiben in die Datenbank auslösen, gefolgt von der entsprechenden SQL Update-Anweisung connDB.execute (strSQL).

Schützen Sie Ihren Code schließlich vor dem Anzeigen oder Ändern:  Extras> Eigenschaften> Schutz.

Behandeln Sie Excel-Probleme:

Von Zeit zu Zeit, insbesondere wenn komplexe Programme enthalten sind, stürzt Excel möglicherweise ab und kann nicht ordnungsgemäß wiederhergestellt werden. Im Falle eines beschädigt xlsx Datei, mit einem effektiven Wiederherstellungstool zur Hand wird m lösenost Probleme.

Einführung des Autors:

Felix Hooker ist ein Datenrettungsexperte in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich Reparatur- rar Fehler und SQL Recovery-Softwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.