📜  excel vba 导入数据到sql server - SQL (1)

📅  最后修改于: 2023-12-03 15:30:39.825000             🧑  作者: Mango

Excel VBA 导入数据到 SQL Server - SQL

如果你需要将 Excel 中的数据导入到 SQL Server 数据库中,那么可以使用 Excel VBA 来实现这一过程。Excel VBA 提供了 SQL 语言的支持,因此可以通过 VBA 在 Excel 中编写 SQL 查询,同时也可以执行诸如 INSERT、UPDATE 和 DELETE 等操作。

准备工作

在开始本教程之前,需要完成以下几个步骤:

  1. 在本地计算机上安装 SQL Server 数据库,如果尚未安装则需先下载此软件并进行安装。建议将 SQL Server Express 安装在本地计算机上,以便无需访问远程服务器即可测试程序代码。

  2. 使用 SQL Server Management Studio (SSMS) 创建一个新的数据库。可以使用以下命令在 SSMS 中创建新数据库:

CREATE DATABASE MyDatabase;
  1. 在 Excel 中创建一个新的工作表,并在其中添加用于数据导入的列。
编写代码
连接到 SQL Server

在 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是目标表,Column1Column2Column3是插入的列。
  • 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 有所帮助!