【问题标题】:How to operate on objects within MS Access VBA如何在 MS Access VBA 中操作对象
【发布时间】:2017-08-03 14:33:57
【问题描述】:

我有一个问题。第一次迭代正确,但第二次在Set tdf = db.TableDefs("temp_table") 中断(尽管在上面创建了一行,但访问找不到“temp_table”)。肯定是新导入表的指针有问题。

    dirfilename = Dir(strfilename & "\")
    Do While dirfilename <> ""

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "temp_table", 
    strfilename & "\" & dirfilename, True
    Set tdf = db.TableDefs("temp_table")
    .
    .
    .
    .
    db.TableDefs.Refresh
    dirfilename = Dir
    Loop

有谁能帮帮我吗?

【问题讨论】:

  • 后续迭代尝试将记录附加到第一次迭代中创建的表中,而不是创建新表。您是否尝试导入多个电子表格?为什么需要 TableDefs?
  • 我正在尝试从位于同一文件夹中的连续工作簿中附加数据(因此我放置了“dir”函数)。第一次迭代后,第二个“temp_table”(我忘了在帖子中粘贴删除以前的“temp_table”的摘录)仍然包含当代值,但它是一个新表。我删除了之前的一个。当然,我可以称它们为“temp_table2”等,但我担心问题仍然存在,而且对于编程标准来说是不正确的。
  • 就个人而言,如果工作表结构永远不会改变,我不会创建和删除表。我只想插入和删除永久表的记录——即使它被称为“临时”表,表是永久的,记录是临时的。为什么还要临时表?这些记录会发生什么?
  • 问题是,工作表结构发生了变化(临时表的结构发生了变化),我设置了临时表以便在其中进行一些修改以准备一个标准。如果您只插入值是正确的结构没有改变。但不幸的是。

标签: excel object iteration vba


【解决方案1】:

我今天无法复制这个问题,尽管过去有过。

试试:

Application.RefreshDatabaseWindow

或

DoCmd.SelectObject acTable, "temp_table", True

【讨论】:

    【解决方案2】:

    好的,我想通了。我需要在导入数据的命令和设置指针 (tdf) 之间插入“db.TableDefs.Refresh”。我还必须唯一地调用临时表,所以'temp_table1'、'temp_table2'等。它现在可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2011-08-09
      • 2012-07-29
      相关资源
      最近更新 更多