2017-10-26 14 views
0

私はVB.netでアプリケーションを作成していますが、SQL ServerからExcelファイルにいくつかのテーブルを転送しようとしています。たくさんの行があるので、私はループを使いたくありません。私は取得しています何SQLからExcelへのデータのインポート

Dim cnPubs As ADODB.Connection 
    cnPubs = New ADODB.Connection 
    Dim strConn As String 
    strConn = "PROVIDER= SQLOLEDB;" 
    strConn = strConn & "DATA SOURCE=(LocalDB)\v11.0;" 
    strConn = strConn & "AttachDbFilename='" & DBPath & "';" 
    strConn = strConn & " INTEGRATED SECURITY=sspi;" 
    cnPubs.Open(strConn) 
    Dim rsPubs As ADODB.Recordset 
    rsPubs = New ADODB.Recordset 

    With rsPubs 
     .ActiveConnection = cnPubs 
     .Open("SELECT * FROM dbo.Table") 
     ExWS.Range("A1").CopyFromRecordset(rsPubs) 
     .Close() 
    End With 
    ExApp.Visible = True 
    cnPubs.Close() 
    rsPubs = Nothing 
    cnPubs = Nothing 

は次のとおりです:

追加情報:[DBNETLIB] [。ConnectionOpen(接続())] SQL Serverが存在しないか、アクセス私は、私が見つけたコードを適応しようとしました否定された

また、このデータベースにSqlClient.SqlConnectionを使用して接続していて、通常通りクエリを実行できることを追加したいと思います。

私は2つのソリューションを参照してください。ADODB.Connectionのと

  • 修正問題は、私は、私は(ループなし)テーブル全体をコピーする方法を見つけるデータベース
  • をいつ変更されることが返されます怖いですSqlConnectionを使用します。
+1

私はどのように役立つかもしれないSQL-Server Management Studioでセットアップするの指示で作業コードのサンプルを持っています。 https://code.msdn.microsoft.com/Export-Excel-from-SQL-3d994cb5?redir=0 –

答えて

0

あなたが持っているなら、SSISを使うことができます。代わりに、次の概念を考慮することができます。 。 。

Sub ADOExcelSQLServer() 
    ' Carl SQL Server Connection 
    ' 
    ' FOR THIS CODE TO WORK 
    ' In VBE you need to go Tools References and check Microsoft Active X Data Objects 2.x library 
    ' 

    Dim Cn As ADODB.Connection 
    Dim Server_Name As String 
    Dim Database_Name As String 
    Dim User_ID As String 
    Dim Password As String 
    Dim SQLStr As String 
    Dim rs As ADODB.Recordset 
    Set rs = New ADODB.Recordset 

    Server_Name = "EXCEL-PC\EXCELDEVELOPER" ' Enter your server name here 
    Database_Name = "AdventureWorksLT2012" ' Enter your database name here 
    User_ID = "" ' enter your user ID here 
    Password = "" ' Enter your password here 
    SQLStr = "SELECT * FROM [SalesLT].[Customer]" ' Enter your SQL here 

    Set Cn = New ADODB.Connection 
    Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _ 
    ";Uid=" & User_ID & ";Pwd=" & Password & ";" 

    rs.Open SQLStr, Cn, adOpenStatic 
    ' Dump to spreadsheet 
    With Worksheets("sheet1").Range("a1:z500") ' Enter your sheet name and range here 
     .ClearContents 
     .CopyFromRecordset rs 
    End With 
    '   Tidy up 
    rs.Close 
    Set rs = Nothing 
    Cn.Close 
    Set Cn = Nothing 
End Sub 

OR

Sub ADOExcelSQLServer() 

    Dim Cn As ADODB.Connection 
    Dim Server_Name As String 
    Dim Database_Name As String 
    Dim User_ID As String 
    Dim Password As String 
    Dim SQLStr As String 
    Dim rs As ADODB.Recordset 
    Set rs = New ADODB.Recordset 

    Server_Name = "LAPTOP\SQL_EXPRESS" ' Enter your server name here 
    Database_Name = "Northwind" ' Enter your database name here 
    User_ID = "" ' enter your user ID here 
    Password = "" ' Enter your password here 
    SQLStr = "SELECT * FROM Orders" ' Enter your SQL here 

    Set Cn = New ADODB.Connection 
    Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _ 
    ";Uid=" & User_ID & ";Pwd=" & Password & ";" 

    rs.Open SQLStr, Cn, adOpenStatic 

    With Worksheets("Sheet1").Range("A2:Z500") 
     .ClearContents 
     .CopyFromRecordset rs 
    End With 

    rs.Close 
    Set rs = Nothing 
    Cn.Close 
    Set Cn = Nothing 
End Sub 

ORRRRRRrrr

また
Sub TestMacro() 

' 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=NORTHWIND.MDF;" 

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

'Now open the connection. 
cnPubs.Open strConn 

' 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 Categories" 
    ' 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 

End Sub 

https://blog.sqlauthority.com/2008/01/08/sql-server-2005-export-data-from-sql-server-2005-to-microsoft-excel-datasheet/

。 。 。最後に

https://www.red-gate.com/simple-talk/sql/t-sql-programming/sql-server-excel-workbench/

。 。 。

https://www.excel-sql-server.com/excel-sql-server-import-export-using-vba.htm#Introduction

関連する問題