我一直在寻找一个直接的解决方案,但还没有找到与我在这个板上尝试做的完全一样的事情。我有一个 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