Sådan importeres data fra Microsoft SQL Server til Microsoft Excel

Sammenfatning

I denne trinvise vejledning beskrives, hvordan data importeres ind i Microsoft Excel fra Pubs-databasen, som er en eksempeldatabase, der følger med Microsoft SQL Server.

ADO (ActiveX-dataobjekter) giver adgang til alle typer datakilder. Det er en flad objektmodel med få objekter. De primære objekter i ADO-objektmodellen er:


Objekt Beskrivelse
-----------------------------------------------------------------------
Connection Henviser til forbindelsen til datakilden.
Recordset Henviser til de udpakkede data.
Command Henviser til en lagret procedure eller SQL-sætninger, der
skal køres.
Selvom der er mange måder at returnere et Recordset på ved hjælp af ADO, er det objekterne Connection og Recordset, der beskrives i denne artikel.

Krav

Du skal have en lokalserver, der kører Microsoft SQL Server, og som indeholder Pubs-databasen.

Det anbefales, at du har kendskab til følgende:
  • Oprettelse af Visual Basic for Applications-procedurer i Office-programmer.
  • Arbejde med objektvariabler.
  • Arbejde med Excel-objekter.
  • RDBMS-koncepter (Relational Database Management Systems).
  • SQL SELECT-sætninger (Structured Query Language).

Henvisning til ADO-objektbiblioteket

  1. Start Excel. Åbn en ny projektmappe, og gem den som SQLExtract.xls.
  2. Start Visual Basic Editor, og vælg dit VBA-projekt.
  3. Klik på References i menuen Tools.
  4. Marker afkrydsningsfeltet med den seneste version af Microsoft ActiveX Data Objects Library.

Oprettelse af forbindelse

  1. Indsæt et nyt modul i projektet.
  2. Opret en ny underprocedure med navnet DataExtract.
  3. Skriv eller indsæt følgende kode:
    ' Create a connection object.
    Dim Db As ADODB.Connection
    Set cnPubs = New ADODB.Connection

    ' Provide the connection string.
    Dim strConn As String

    'Use the SQL Server OLE DB Provider.
    strConn = "PROVIDER=SQLOLEDB;"

    'Connect to the Pubs database on the local server.
    strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=pubs;"

    'Use an integrated login.
    strConn = strConn & " INTEGRATED SECURITY=sspi;"

    'Now open the connection.
    cnPubs.Open strConn

Udpakning af data

Skriv eller indsæt følgende kode for at udpakke posterne:
' Create a recordset object.
Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset

With rsPubs
' Assign the Connection object.
.ActiveConnection = cnPubs
' Extract the required records.
.Open "SELECT * FROM Authors"
' Copy the records into cell A1 on Sheet1.
Sheet1.Range("A1").CopyFromRecordset rsPubs

' Tidy up
.Close
End With

cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing

Bekræftelse af, at koden fungerer

  1. Kør koden.
  2. Skift til Excel, og se Ark1 i projektmappen for at få vist dataene.

Fejlfinding

Hvis koden hænger, og du modtager en kørselsfejl, er databaseserveren muligvis gået ned. Du kan bruge egenskaben ConnectionTimeout til at kontrollere den tid, det tager at returnere en kørselsfejl. Angiv egenskaben til en værdi, der er større end nul. Hvis du angiver værdien til nul, får forbindelsen aldrig timeout. Standardværdien er 15 sekunder.

Referencer

Du kan finde flere eksempelkoder ved at søge på følgende Microsoft-websted:

Egenskaber

Artikel-id: 306125 – Seneste udgave 8. feb. 2008 – Udgave 1

Feedback