我一直在寻找直接的解决方案,但没有找到与我在此板上尝试做的事情完全一样的事情。我有一个Excel工作表,其中包含几个不同公司债券的不连续列表(例如,一个公司有5个债券,3个完全空行,然后另一个公司有6个债券的另一个列表,5个完全空行等)。 。
我正在尝试编写一个SQL更新查询,该查询将直接更新.accdb格式的Access表。我具有与Excel中的列标题同名且具有相同数据的字段。
我需要执行以下逻辑:在范围A1&B1&C1不为空白的地方,向表中添加新记录,该表将A1&B1&C1显示为字段[Ticker],[Coupon],[Maturity]。这些单元格为空白的地方,移至下一行。
有人可以帮助评估我的代码吗?在指定“ 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
DAO.DBEngine.36
适用于DAO 3.6,适用于MDB格式的数据库文件。但是,您的数据库是ACCDB格式,这意味着DAO 3.6将无法工作。您必须使用较新的DAO。
'Set objConnection = CreateObject("DAO.DBEngine.36")
Set objConnection = CreateObject("DAO.DBEngine.120")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句