【问题标题】:Using INSERT INTO to write data into access database使用 INSERT INTO 将数据写入 access 数据库
【发布时间】:2015-11-23 22:30:07
【问题描述】:

我正在尝试使用 INSERT INTO 命令将数据从 excel 2010 文件写入 Access 2007 文件。数据包含在 Tool_Selector.xlsm excel 文件中的“NewProj”工作表中,需要将其写入“Tool_Database.mdb”文件,但不幸的是我收到了几个不同的错误。这就是我目前的情况

Sub AddData()
  Dim Cn As ADODB.Connection
  Set Cn = New ADODB.Connection

  Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Tools_Dev\_Tool_Selector\Tool_Selector.xlsm;Extended Properties=Excel 8.0;" _
        & "Persist Security Info=False"

  Cn.Execute "INSERT INTO Project_Names IN 'D:\Tool_Database\Tool_Database.mdb' SELECT * FROM Worksheets("NewProj").Range("A2").Value"

  Cn.Close
  Set Cn = Nothing
End Sub

我从这个帖子得到了代码:Insert Data from Excel into Access using VBA

我只需要传递单个单元格的值。

谢谢。

【问题讨论】:

  • 我知道这个 Cn.Execute "INSERT INTO Project_Names IN 'D:\Tool_Database\Tool_Database.mdb' SELECT * FROM Worksheets("NewProj").Range("A2").Value" 是休息点在哪里...如何选择特定的单元格或单元格行?
  • 看看这是否有帮助:stackoverflow.com/questions/5122582/…
  • 现象级的,你是个好人。
  • 当我运行该代码时,我得到运行时错误 424 Object Required 在这一行:strSQL = "INSERT INTO Project_Names (Proj_Num) " & "VALUES (" & NewProj.[A1] & ")"
  • 试试?worksheets("newproj").[a1] 我认为您不能像以前那样按名称引用工作表。如果可行,您当然可以在现有参考文献的基础上使用它,当然不用问号。顺便说一句,在 Stackoverflow 中,如果您在某人的姓名前加上 @,他们会收到一条消息,否则他们可能会错过它,除非他们是帖子的作者。

标签: excel ms-access vba


【解决方案1】:

问题在于您在 SQL 语句中使用了 VBA 代码。以下行将编译但在执行时失败:

Cn.Execute "INSERT INTO Project_Names IN 'D:\Tool_Database\Tool_Database.mdb' SELECT * FROM Worksheets("NewProj").Range("A2").Value"

失败是因为当您使用 Worksheets()、.Range 和 .Value 的 VBA 函数时,您仍在 SELECT 语句中。 IIRC,您应该能够使用 SQL 语法从工作表中选择特定范围。正确的语法应该是:

"SELECT * FROM [Sheet$]"

如果你想要一个特定的范围,那么你会尝试:

"SELECT * FROM [Sheet$A1:C20]"

如果您正在寻找有关将 ADO 与 Excel 结合使用的更多信息,请参阅 Microsoft 文章:http://support.microsoft.com/kb/257819。脚本专家还写了一篇不错的文章,帮助我在几年前理解它:http://technet.microsoft.com/en-us/library/ee692882.aspx

希望能帮助您解决问题。但是,我要给你一句话警告。我记得当我第一次使用这段代码时,在查询已经打开的 Excel 电子表格时遇到了一些非常奇怪的问题。如果我正在查询一个已经打开的 Excel 电子表格,那么我会遇到内存泄漏的问题,并且 Excel 最终会耗尽内存来使用。解决此问题的唯一方法是完全关闭 Excel。 ADO 引用是否正确关闭/清除也无关紧要。

事实上,我只是用谷歌搜索了一遍,这里有一篇关于这个错误的文章:http://support.microsoft.com/default.aspx?scid=kb;en-us;319998&Product=xlw

【讨论】:

    【解决方案2】:

    这听起来类似于我从 Office 2003 升级到 2007 时遇到的问题。

    我的解决方案是更改连接字符串中的提供程序。由于您使用的是现代办公版本,我认为应该是:

    Provider=Microsoft.Ace.OLEDB.12.0;
    

    您可能还想查看该扩展属性。我知道 Excel 8.0 是 Excel '97 文件。 Excel 2010 是 14.0

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多