2017-08-03 38 views
1

我遇到了问题。第一次迭代正确,但第二次中断在Set tdf = db.TableDefs("temp_table")(Access无法找到“temp_table”,虽然它在上面创建了一行)。新的导入表的指针肯定是错误的。如何操作MS Access中的对象VBA

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 

任何你能帮助我吗?

+0

后续迭代试图将记录附加到第一次迭代中创建的表,而不是创建新表。您是否尝试导入多个电子表格?为什么你需要TableDefs? – June7

+0

我想追加来自连续工作簿的数据在同一个文件夹中(因此我放置了'dir'函数)。第一次迭代后,第二个“temp_table”(我忘了在帖子中粘贴删除以前的“temp_table”的摘录)仍然包含当代值,但它是一个新表。我删除了前一个。当然,我可以称它们为“temp_table2”等等,但恐怕问题仍然会出现,而且对于编程标准来说是不正确的。 –

+0

就个人而言,如果工作表结构永不改变,我不会创建和删除表。我只是插入和删除永久表的记录 - 即使它被称为“临时”表,表是永久性的,记录是临时性的。为什么临时表呢?这些记录会发生什么? – June7

回答

0

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

尝试:

Application.RefreshDatabaseWindow

DoCmd.SelectObject acTable, "temp_table", True

0

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