【发布时间】:2018-09-05 09:48:29
【问题描述】:
我是 Excel VBA 和 SQL 的新手。我设法创建了一个宏按钮并将 Excel 单元格数据推送到 SQL 服务器表。不过,我有点疑惑:
如何从不同的工作表中获取 Excel 单元格数据,然后将它们推送到 SQL Server 数据库中的不同表中? (目前,我在一个 Excel 文件中有 3 张工作表 - 客户、测试、信息。)
当前工作代码:
Sub Button1_Click()
Dim conn As New ADODB.Connection
Dim iRowNo As Integer
Dim sCustomerId, sFirstName, sLastName As String
With Sheets("Customers")
'Open a connection to SQL Server
conn.Open "Provider=SQLOLEDB;Data Source=TESTpc\SQLEXPRESS;Initial Catalog=ExcelSQLServerDemo;Trusted_connection=yes"
'Skip the header row
iRowNo = 2
'Loop until empty cell in CustomerId
Do Until .Cells(iRowNo, 1) = ""
sCustomerId = .Cells(iRowNo, 1)
sFirstName = .Cells(iRowNo, 2)
sLastName = .Cells(iRowNo, 3)
'Generate and execute sql statement to import the excel rows to SQL Server table
conn.Execute "INSERT into dbo.Customers (CustomerId, FirstName, LastName) values ('" & sCustomerId & "', '" & sFirstName & "', '" & sLastName & "')"
iRowNo = iRowNo + 1
Loop
MsgBox "Customers Exported To Database"
conn.Close
Set conn = Nothing
End With
End Sub
我需要将数据存储在数组中,然后将它们推送到数据库吗?
【问题讨论】:
-
将
With Sheets("Customers")更改为With Sheets("Test")或With Sheets("Information")。 -
@PaichengWu 那么我需要在 vba 中创建新模型吗?我不能在一个 Sub 下做吗?因为我想知道无论如何,我可以在 1 个函数下定义所有 3 张工作表吗?例如(“客户”和“信息”和“测试”),然后在按下按钮后将所有数据推送到数据库 - 像这样。
-
当然你可以把三个都放在一个子里。如果没有有关您的三张纸的布局和数据库架构的更多信息,我无法为您提供更多帮助。您应该了解如何插入工作表
Customers,然后扩展到第二和第三张工作表。 -
谢谢@PaichengWu
-
由于您有一个子单独在工作表
Customers上完成工作,因此为工作表test修改它并为工作表information进行修改。然后将三个 sub 合二为一。