首页 > 解决方案 > 我创建了一些将 Excel 数据转换为 SQL INSERTS 的 VBA。有没有办法直接更新 SQL Server?

问题描述

目前,我将复制的 SQL 粘贴到 SQL Server Management Studio 中,然后执行。这很好,因为它只需要几秒钟。但是,我想知道是否有办法获取我的 INSERTS 或 UPDATES 并自动将它们应用到 SQL Server。

我尝试过使用 Power Query,但如果我可以添加一两行来自动更新,我真的不想重新发明一些东西。我在网上找不到任何可以与我已经开发的东西联系起来的东西。

下面的代码是我用来将列转换为 SQL INSERT 的代码。我想将代码末尾的剪贴板副本替换为将直接插入到 SQL SERVER 数据库表中的内容。

Set Lad = NewFormat.Range("A2:A" & LastRow)

For Each cell In Lad
 cell.Value = "INSERT INTO GeoChem1(OrderID,SampleNumber,Matrix,Method,WellID,Site,DateCollected,DateReceived,CustomerName,Param," & _
  "ParamResults,Units,Dilution,Qualifier,RepLimit,AnalysisDate) VALUES(" & cell.Offset(0, 1).Value & "," & "'" & cell.Offset(0, 2).Value & "'" & "," & "'" & _
  cell.Offset(0, 3).Value & "'" & "," & "'" & cell.Offset(0, 4).Value & "'" & "," & "'" & cell.Offset(0, 5).Value & "'" & "," & cell.Offset(0, 6).Value & "," & _
  "'" & cell.Offset(0, 7).Value & "'" & "," & "'" & cell.Offset(0, 8).Value & "'" & "," & "'" & cell.Offset(0, 9).Value & "'" & "," & "'" & _
   cell.Offset(0, 10).Value & "'" & "," & cell.Offset(0, 11).Value & "," & "'" & cell.Offset(0, 12).Value & "'" & "," & cell.Offset(0, 13).Value & _
   "," & "'" & cell.Offset(0, 14).Value & "'" & "," & cell.Offset(0, 15).Value & "," & "'" & cell.Offset(0, 16).Value & "'" & ");"
  Next cell

 ''COPY TO CLIPBOard''
 Set Lad = NewFormat.Range("A2:A" & LastRow)
Lad.Copy

标签: sql-serverexcelvba

解决方案


这是我从库中为您提取的通用 ADO 执行模板。我建议研究这个主题。

还值得指出的是,您正在循环浏览工作表。学习转储到数组并以这种方式处理。

这需要正确引用 Microsoft 数据对象库

Private Sub zzz()
    Dim vbSql As String, cnnstr as string
    Dim cnn As ADODB.Connection

    vbSql = "sql statement; "

    Set cnn = New Connection
    cnnstr = "Provider=SQLOLEDB;Data Source=yourserver;Initial Catalog=yourDB;User ID=UserName;Password=PassWord; Trusted_Connection=No"
    cnn.Open cnnstr
    cnn.Execute vbSql
    cnn.Close
    Set cnn = Nothing
End Sub

推荐阅读