Importera data från Microsoft SQL Server till Microsoft Excel

Sammanfattning

I den här artikeln finns stegvisa instruktioner för import av data till Microsoft Excel från Pubs-databasen, en exempeldatabas som ingår i Microsoft SQL Server.

ADO (ActiveX Data Objects) ger tillgång till alla typer av datakällor. Det är en platt objektmodell med få objekt. Huvudobjekten i ADO-objektmodellen är följande:


Objekt Beskrivning
-----------------------------------------------------------------------
Anslutning Syftar på anslutningen till datakällan.
Postuppsättning Syftar på data som extraheras.
Kommando Syftar på en lagrad procedur eller SQL-uttryck som
behöver köras.
Även om det finns många sätt att returnera en postuppsättning med hjälp av ADO, handlar denna artikel om anslutningen och postuppsättningsobjekten.

Krav

Du måste ha en lokal server med Microsoft SQL Server och Pubs-databasen.

Microsoft rekommenderar att du har kunskaper om följande:
  • Hur man skapar Visual Basic for Applications-procedurer i Office-program.
  • Hur man arbetar med objektvariabler.
  • Hur man arbetar med Excel-objekt.
  • RDBMS-begrepp (Relational Database Management Systems).
  • SELECT-uttryck i SQL (Structured Query Language).

Hur man refererar till ADO-objektbiblioteket

  1. Starta Excel. Öppna en ny arbetsbok och spara den som SQLExtract.xls.
  2. Starta Visual Basic Editor och markera ditt VBA-projekt.
  3. Klicka på ReferenserVerktyg-menyn.
  4. Markera kryssrutan för den senaste versionen av Microsoft ActiveX Data Objects Library.

Skapa anslutningen

  1. Infoga en ny modul i projektet.
  2. Skapa en ny subprocedur med namnet DataExtract.
  3. Skriv eller klistra in följande kod:
    ' Create a connection object.
    Dim cnPubs 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

Extrahera data

Skriv eller klistra in följande kod för extrahering av posterna:
' 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

Kontrollera att koden fungerar

  1. Kör koden.
  2. Växla till Excel och visa Blad1 i arbetsboken för att granska data.

Felsökning

Om koden låser sig och det visas ett meddelande om ett körfel kan databasservern vara nere. Du kan använda egenskapen ConnectionTimeout för att ange hur lång tid det tar att returnera ett meddelande om körfel. Ge den här egenskapen ett värde över noll. Om du anger värdet noll bryts anslutningen aldrig på grund av timeout. Standardvärdet är 15 sekunder.

Referenser

Du kan hitta ytterligare exempelkod genom att söka på följande Microsoft-webbplats:

Egenskaper

Artikel-id: 306125 – senaste granskning 8 feb. 2008 – revision: 1

Feedback