【发布时间】:2020-03-09 17:38:50
【问题描述】:
每次员工执行 VBA 宏时,我都需要将 Excel 中的范围推送到 SQL 表中的新行。到目前为止,我已经在 Excel 中将数据分成单行和多列(总共 110 个数据单元格)。我现在的问题源于如何将 Excel 工作表中的每个单元格插入相应的列和 SQL 表中的第一个 empty 行。我在互联网上进行了一些相当广泛的搜索,但没有发现任何与我想要做的事情相近的东西。
是否有正确的程序允许我将 110 列的行转储到 SQL 表的第一个空行中?
我已经写好了表格,并且设置了范围:
Set DataBaseData = ActiveSheet.Range("DO1:HT1")
除此之外,我不知道以何种方式打开与服务器、数据库和表的连接。到目前为止,这是我所追求的:
Sub Connection()
Dim Conn As ADODB.Connection
Dim Command As ADODB.Command
Set Conn = New ADODB.Connection
Set Command = New ADODB.Command
Dim i As Integer
Dim columnnumber As Integer
i = 0
Conn.ConnectionString = "Provider=SQLOLEDB; Data Source=[Nope];Initial Catalog=[NopeNope];User ID=[NopeNopeNope];Password=[AbsolutelyNot]; Trusted_Connection=no;"
Conn.Open
Command.ActiveConnection = Conn
End Sub
任何帮助将不胜感激。
如果您对我正在尝试做什么感到好奇:我正在将一系列数据从 CMM 推送到数据库,这样我就可以将数据存储所需的时间,然后调用该数据到 PowerBI 和 Minitab。
【问题讨论】:
-
数据库表中没有“空行” - 只有已插入的记录。您将需要构造一个 SQL 插入语句来添加记录,或打开一个可编辑的记录集,在该记录集上调用
AddNew,添加您的字段值,然后调用Update,例如参见 vb-helper.com/howto_ado_insert.html 或 docs.microsoft.com/en-us/sql/ado/reference/ado-api/…。跨度> -
我假设您已经考虑过从 power query 查询 excel,否定了涉及 sql 的要求...?
-
@LJ01 我已经考虑过了,但是 ISO/IATF 要求记录保留 10 年,所以我希望有一个地方可以永久保存它,而不是让成千上万的 Excel 表格四处飘荡。
标签: sql excel database vba ssms