📅  最后修改于: 2023-12-03 15:30:39.825000             🧑  作者: Mango
如果你需要将 Excel 中的数据导入到 SQL Server 数据库中,那么可以使用 Excel VBA 来实现这一过程。Excel VBA 提供了 SQL 语言的支持,因此可以通过 VBA 在 Excel 中编写 SQL 查询,同时也可以执行诸如 INSERT、UPDATE 和 DELETE 等操作。
在开始本教程之前,需要完成以下几个步骤:
在本地计算机上安装 SQL Server 数据库,如果尚未安装则需先下载此软件并进行安装。建议将 SQL Server Express 安装在本地计算机上,以便无需访问远程服务器即可测试程序代码。
使用 SQL Server Management Studio (SSMS) 创建一个新的数据库。可以使用以下命令在 SSMS 中创建新数据库:
CREATE DATABASE MyDatabase;
在 Excel VBA 中连接到 SQL Server 数据库的第一步是建立连接。可以使用以下代码来建立连接:
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim constr As String
constr = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
conn.Open constr
在上述代码中:
ADODB.Connection
是通过 Microsoft ActiveX 数据对象 (ADO) 技术建立的连接对象。constr
包含连接字符串,指示连接到 SQL Server 数据库的必要信息,例如用于连接的提供程序、数据源、数据库和身份验证的方法。完成了连接后,就可以执行 SQL 查询并将 Excel 数据插入到数据库表中了。以下是一个例子:
Dim sql As String
sql = "INSERT INTO MyTable (Column1, Column2, Column3) VALUES (?, ?, ?);"
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = sql
cmd.CommandType = adCmdText
Dim cel As Range
For Each cel In Range("A2:C11")
cmd.Parameters.Append cmd.CreateParameter(, adVarWChar, adParamInput, Len(cel.Value), cel.Value)
Next cel
cmd.Execute
在上述代码中:
MyTable
是目标表,Column1
、Column2
和Column3
是插入的列。cmd
是通过 ADO 技术创建的 Command
对象。这个对象在执行查询时用来执行参数化查询以及把 VBA 数组插入到 SQL 表中。Range("A2:C11")
是 Excel 中包含要插入到表格中的数据的单元格区域。一旦完成数据插入,就可以关闭连接了。可以使用以下代码来关闭连接:
conn.Close
Set conn = Nothing
在上述代码中,这将释放内存并断开连接。
本教程介绍了如何使用 Excel VBA 将数据导入到 SQL Server 中。完成了准备工作之后,只需编写几行 VBA 代码即可完成此任务。
以下是本教程最终的代码示例:
Sub ImportDataToSqlServer()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim constr As String
constr = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
conn.Open constr
Dim sql As String
sql = "INSERT INTO MyTable (Column1, Column2, Column3) VALUES (?, ?, ?);"
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText = sql
cmd.CommandType = adCmdText
Dim cel As Range
For Each cel In Range("A2:C11")
cmd.Parameters.Append cmd.CreateParameter(, adVarWChar, adParamInput, Len(cel.Value), cel.Value)
Next cel
cmd.Execute
conn.Close
Set conn = Nothing
End Sub
希望这篇教程对你使用 Excel VBA 导入数据到 SQL Server 有所帮助!