访问未找到在网络上的 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 对象?

如何更改在VBA中创建的下拉列表的字体大小和格式

为什么单击保存按钮时我的vba用户表单崩溃?

如何在 VBA 的另一个函数中调用我在 VBA 中创建的函数?

excel2013使用vba代码提示未找到提供程序,改程序可能未正确安装怎么处理