将特定单元格从Excel导出到MS Access

时间:2015-01-31 13:59:51

标签: excel vba ms-access export

下面的代码(给我)有效,但我不理解值(第9行)。当我尝试添加更多单元格时,我不断收到错误消息。我是VBA的新手可能会有人添加更多字段,所以我可以更好地理解,例如:

C5成为Ingredient2 C6成为Ingredient3 C7成为Ingredient4 L5进入Lot2 L6进入Lot3 L7进入Lot4 还有更多。

下面的值只是用于测试的任意值。请查看我的电子表格 我使用的电子表格在这里:https://mega.co.nz/#!2cZ3kKAZ!BL-HJM...1tZewrw-CH-1Dc

Sub Button10_Click()
  Dim strSQL As String

  Set appAccess = CreateObject("Access.Application")

  appAccess.Visible = False

  strSQL = "INSERT INTO [Finished Batches] ([Production Date],[Lot_Number],[Ingredient1],[Amount1]) " & _
           "VALUES (#" & Range("C5") & "#,'" & Range("D5") & "','" & Range("F23") & _
           "'," & Range("G23") & ")"

  With appAccess
    .OpenCurrentDatabase ("C:\users\jay neuh\desktop\database\ss database.mdb")
    .DoCmd.RunSQL strSQL, dbFailOnError
    .CloseCurrentDatabase
  End With

  Set appAccess = Nothing
End Sub

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

Access使用SQL语言处理数据,在本例中为INSERT命令。

INSERT命令如下所示:

INSERT INTO [my_table_name] ([my_string_column],[my_number_column],[my_date_column])
VALUES ('my text value', 42, #2015-01-31#)

请注意以下几点:

  • 列数必须与值数相同
  • 如果您要传递文字,则需要用单引号
  • 包装
  • 如果你要传递日期,则需要用哈希标志包裹
  • 如果您传递号码,则不得包裹

你没有提到你得到了什么样的错误,但是如果在你的Access数据库中,[Lot_Number]字段实际上是一个数字类型,将它包装在单个配额中就像你的例子一样可能是问题。

您应该检查Introduction to Access SQL

编辑:你应该总是使用

Debug.Print strSQL

要预览您的SQL语句,如果您在代码中的某处出现语法错误,您将更有可能发现它,例如缺少逗号,单引号或括号。