我一直在寻找一个直接的解决方案,但没有发现任何像我试图在这个板上做的事情。我有一个Excel工作表,其中有几个针对不同公司的非连续债券列表(假设一家公司有5个债券,3个完全空行,然后另一个列表列出另一个公司的6个债券,5个完全空行,等等)。
我正在尝试编写一个SQL查询,该查询将直接更新.accdb格式的Access表。我的字段与Excel中的列标题具有相同的名称,具有相同的数据。
我需要执行这样的逻辑:在range A1 & B1 & C1不为空的情况下,向表中添加一个新记录,显示A1 & B1 & C1作为字段Ticker、优惠券和成熟度。在这些单元格为空的地方,移动到下一行。
有人能帮我评估我的代码吗?当我指定"Set db“时,我得到了一个错误3343。
我的初步代码如下(从网上可以找到的内容中拼凑到与Excel和SQL命令的接口):
Sub UpdateDatabase()
    Dim x As Integer
    Dim strSQL As String
    Dim db As Database
    Dim dbLocation As String
    Dim objConnection As Object
        Worksheets("Bonds Clean").Activate
        Range("A6").Select
    dbLocation = "c:\Folders\Workflow Tables.accdb"
    Set objConnection = CreateObject("DAO.DBEngine.36")
    Set db = objConnection.OpenDatabase(dbLocation)
        For x = 1 To Range(Selection, Selection.End(xlDown)).Rows.Count
            If Not (Selection.Value = "") Then
                strSQL = "UPDATE tblBonds_Temp SET"
                strSQL = strSQL & "Ticker =" & Chr(34) & Selection.Offset(0, 1).Value & Chr(34) & ","
                strSQL = strSQL & "Coupon =" & Chr(34) & Selection.Offset(0, 2).Value & Chr(34) & ","
                strSQL = strSQL & "Maturity =" & Chr(34) & Selection.Offset(0, 3).Value & Chr(34) & ";"
                db.Execute strSQL
            Else
            End If
        Selection.Offset(1, 0).Select
        Next
End Sub发布于 2013-09-20 18:56:59
DAO.DBEngine.36用于DAO 3.6,适合于MDB格式的数据库文件。但是,您的数据库是ACCDB格式,这意味着DAO 3.6不能工作。您必须使用较新的DAO代替。
'Set objConnection = CreateObject("DAO.DBEngine.36")
Set objConnection = CreateObject("DAO.DBEngine.120")https://stackoverflow.com/questions/18923446
复制相似问题