【问题标题】:Write/update data via ADO to closed Excel workbook通过 ADO 将数据写入/更新到已关闭的 Excel 工作簿
【发布时间】:2016-11-24 17:43:21
【问题描述】:

我正在尝试使用 ADO 更改已关闭的 Excel 工作簿中的数字。我发现下面的代码是由 L42 在 2015 年编写的。但是该过程因错误“没有为一个或多个必需参数提供值”而停止。我找不到丢失的地方!

Sub ChangeNum()
Dim con As ADODB.Connection, rec As ADODB.Recordset
Dim sqlstr As String, datasource As String
  Set con = New ADODB.Connection: Set rec = New ADODB.Recordset
  datasource = "D:\DropBox\TraderShare\TraderNum.xlsx"
Dim sconnect As String
  sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
             "Data Source=" & datasource & ";" & _
             "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
  con.Open sconnect
  sqlstr = "UPDATE [Sheet1$] SET [Number] = ""16900"" WHERE [ID] = INum"
  rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified 'adLockOptimistic , adOpenStatic, adLockReadOnly
  con.Close
  Set rec = Nothing: Set con = Nothing
End Sub

感谢您的帮助!

【问题讨论】:

    标签: excel ado vba


    【解决方案1】:

    我发现了问题! sqlstr 应该写成:

    sqlstr = "UPDATE [Sheet1$] SET [Number] = ""16900"" WHERE [ID] = ""INum"""
    

    感叹号很重要!如果需要感叹号来连接字符串的不同部分,我不知道为什么需要这种方式。不过好像乱序了,最后1个太多了!

    【讨论】:

    • 感叹号会有所作为...但您的意思是引号,这可能会有所作为。很好地回答了你自己的问题。
    【解决方案2】:

    此错误的通常原因是缺少或拼写错误的值。我会专门检查一下 SQL 语句,看看有什么问题

    【讨论】:

    • 是的,Doug,这正是我想要的。但是我对SQL和ADO知之甚少,这就是我寻求帮助的原因!如您所见,代码行数很少,拼写当然是我首先检查的。错误在“rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified。我找不到更多的必需参数用于 Open 语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    相关资源
    最近更新 更多