【问题标题】:Updating .accdb using Excel data from ACCESS VBA使用 ACCESS VBA 中的 Excel 数据更新 .accdb
【发布时间】:2013-09-16 14:57:45
【问题描述】:

我一直在寻找一种使用存储在 Excel 文件中的数据来更新 Access 数据库的方法,但我只能找到方法来自 Excel VBA 而不是通过 Access 本身,这不是我想要的想。这将使用 Excel 文件中定期更新的数据动态更新 Access 表。我在 Access 中设置了一个自动编号作为主键的表。我只需要一个代码来根据命令执行此操作(例如“刷新按钮”)。

我发现此链接有助于通过 Excel (Updating Access Database from Excel Worksheet Data) 执行此操作。我想要一种仅在 Access 中执行此操作的方法(无需打开 Excel;仅引用工作表中的数据)。这可能吗?

【问题讨论】:

  • 在 Access 中,是否可以创建指向 Excel 工作表的链接,然后在数据表视图中打开链接时,Access 是否可以正确呈现数据?
  • 从 Excel 导入数据是我最初设置表格的方式,但是,当 Excel 文件更新时,Access 中的数据似乎没有更新。相反,我的目标是通过 SQL 语句更新 Access 表。
  • 就链接表而言,它似乎存在一些缺陷。 1) 您需要在 Excel 中定义范围——这会迫使您选择任意长的范围或定期更改 Excel 中的范围名称以包含您想要的数据。 2) 如果不与 Excel 接口,您不能使用验证规则或以其他方式更改记录集。 3) 您不能打开 Excel 文件才能进行此更新。您可以在 Excel 文件中进行 1000 次更改,但在文件关闭之前不会有任何更改,此时 Access 会锁定 Excel 文件,因此无法进行进一步的更改。
  • 那么在将工作表更改保存回工作簿文件之前,是否要运行 Access 过程以从 Excel 工作表中提取更改的数据?
  • 不,我认为你错过了我对#3 的看法。我的意思是即使保存了工作簿,在工作簿关闭之前,Access 也不会更新。

标签: sql ms-access vba


【解决方案1】:

您无法通过我知道的 sql 语句来执行此操作,但您可以创建一个按钮,单击该按钮可打开工作簿/工作表,然后将数据从中检索到您的数据库中 - 类似于:

dim XL as object
dim WB as object
dim WS as object

Set XL = CreateObject("Excel.Application")
XL.Visible = False
XL.DisplayAlerts = False
Set WB = XL.workbooks.open(pathname)
Set WS = WB.Worksheets("Sheet1")

然后使用该数据的单元格引用将数据检索到访问中

【讨论】:

  • 这是一个不错的主意,但我觉得一旦数据集变得更长,在 VBA 中运行循环会变得非常缓慢。我会记住这一点,尽管我确信也必须有一种通过 SQL 的方法。感谢回答,谢谢。如果有人可以提供基于 SQL 的答案,我认为这将是最好的解决方案。
猜你喜欢
  • 2015-09-07
  • 2017-02-21
  • 2017-01-10
  • 2019-01-14
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多