使用存储过程将数据从 SQL 表插入 Excel
Posted
技术标签:
【中文标题】使用存储过程将数据从 SQL 表插入 Excel【英文标题】:Insert Data to Excel from SQL Table using a Stored Procedure 【发布时间】:2016-12-08 13:16:43 【问题描述】:我想每天 工作表。它必须删除excel中的数据并将新数据插入到同一张表中。
我该怎么做?
这段代码有错误
Sub Connecion()
' 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=(10.200.157.110);INITIAL CATALOG=Brickstream_DEVMGR;"
'Use an integrated login.
strConn = strConn & " INTEGRATED SECURITY=sspi;"
'Now open the connection.
cnPubs.Open strConn
End Sub
【问题讨论】:
到目前为止你尝试过什么?最简单的方法 (IMO) 是创建数据连接并完全跳过使用 VBA。 基本上您的问题是如何进行连接,因为 SQL 将是相同的,到目前为止您有什么? 我正在添加我的 VBA 代码以打开连接,但出现错误 第一个建议:去掉IP地址两边的括号 @SemihUral,您不需要为它创建代码。只需在 excel 中使用 QueryTables.Add,它就会与可以随时刷新的数据建立实时连接。您可以通过编程方式或使用 excel 本身(Data\From other sources\From SQL server 并填写信息)来执行此操作。 【参考方案1】:以下代码对我有用
Sub GetDataFromADO()
'Declare variables'
Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=10.200.157.110;Initial Catalog=Brickstream_DEVMGR;User ID=usr_bayi;Password=3Ay1usr;"
objMyConn.Open
'Set and Excecute SQL Command'
strSQL = "select * from DEALER_DETAILED"
'Open Recordset'
Set objMyRecordset.ActiveConnection = objMyConn
objMyRecordset.Open strSQL
'Copy Data to Excel'
ActiveSheet.Range("A2").CopyFromRecordset (objMyRecordset)
End Sub
【讨论】:
【参考方案2】:简单问一下。
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 = "your_server_name" ' 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
【讨论】:
以上是关于使用存储过程将数据从 SQL 表插入 Excel的主要内容,如果未能解决你的问题,请参考以下文章
SQL/C#:DataTable 到存储过程(从用户定义的表类型插入)- 转换错误
将数据从 MS Sql Server 存储过程导出到 excel 文件