访问未找到在网络上的 vba 中创建的 excel 文件
Posted
技术标签:
【中文标题】访问未找到在网络上的 vba 中创建的 excel 文件【英文标题】:Access not finding an excel file which was created in vba on a network 【发布时间】:2014-05-26 19:40:29 【问题描述】:我的代码可以打开和更改 Excel 表,将其保存到新的(网络)位置,然后从新格式化的 Excel 中导入数据。我遇到的问题是代码找不到新创建的文件,说它不存在。我玩过添加“暂停”功能,但我想知道是否有办法在 vba 中刷新网络链接?或者有没有更好的方法?文件会因大小而异。
如果我在代码中添加一个中断并让它静置几分钟,它会发现文件正常。
Private Sub btnImport_Click()
[other code]
'save excel file onto network location
xlApp.ActiveWorkbook.SaveAs ("\\network\file.xlsx")
xlApp.Quit
'Import file to temp table.
DoCmd.TransferSpreadsheet acImport,acSpreadsheetTypeExcel9, "tblImport","\\network\file.xlsx", True
End sub
运行时错误“3011”:Microsoft Access 数据库引擎找不到对象“\network\file.xlsx”。确保对象存在并且正确拼写其名称和路径名。
【问题讨论】:
如果你已经完成了 Excel,那么在退出后使用Set xlApp = Nothing
。在此之前释放任何其他 Excel 资源。我不认为这应该是一个问题,但可能会让你更近一步。在此之后拨打DoEvents
也不会受到伤害。
【参考方案1】:
完成后释放 Excel 资源:
xlApp.Quit
'free any other Excel resources, then..
Set xlApp = Nothing
如果是网络问题并且您需要延迟,那么您可以使用Application.OnTime
。 15 秒:
Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
这将在延迟后运行您的过程(my_Procedure()),并且此过程可以执行导入。
【讨论】:
谢谢我错过了 Set xlApp = Nothing。我不喜欢将延迟编码为这个,因为文件大小会发生很大变化 - 我必须将其设置为最大数量。我将更改我的工作流程以在本地处理并在完成后将目录复制回网络。感谢您的意见。以上是关于访问未找到在网络上的 vba 中创建的 excel 文件的主要内容,如果未能解决你的问题,请参考以下文章
Excel、VBA、PowerPivot、DataFeed 连接 - 更新文件路径
我在哪里可以找到可以在 Powershell 中创建的所有 COM 对象?