访问中的 Vba 代码循环遍历文件夹中的所有 excel 文件,打开、保存和关闭它们

Posted

技术标签:

【中文标题】访问中的 Vba 代码循环遍历文件夹中的所有 excel 文件,打开、保存和关闭它们【英文标题】:Vba code in access that loops through all excel files in a folder, opens, saves and closes them 【发布时间】:2018-08-23 13:47:17 【问题描述】:

我正在开发一个可以在 Access 中部署的 vba 脚本,它可以打开、保存和关闭某个文件夹中的所有 excel 文件。

到目前为止,我有这个代码,它有点工作,但有一些问题。一个是它实际上明显地打开了 excel,在循环完成后,一个空的、看起来很奇怪的 excel 仍然打开。有了这个,我还注意到,在进程下的任务管理器中,即使没有打开任何 excel 实例,这也会导致运行 excel 进程。

其次,由于格式是 xls,我正在处理 excel 兼容模式,不确定是否找到了最佳解决方案,因为文件扩展名和格式不一样,我有时会收到错误消息。

另外,我只是想按原样对代码进行一些一般性的改进。

这是我的代码:

Sub demo()
Dim directory As String, fileName As String
Dim Mywb As Workbook
Dim app As New Excel.Application
app.Visible = True
directory = "C:\Users\test\FolderA\"
fileName = Dir(directory & "*.xls")

Do While fileName <> ""
Workbooks.Open (directory & fileName)
fileName = Dir()
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.Save
ActiveWorkbook.Close
Loop
End Sub

【问题讨论】:

app.Quit 最后关闭 Excel 应用程序。 使用Application.ScreenUpdating = False 禁用屏幕更新并在结束时重新打开。从用户的角度来看,这将使运行更顺畅,更清洁。 @QHarr 抱歉沟通不畅,我在 vba 中没有收到此错误,如果我打开此代码中循环的一些 excel 文件,我会收到错误消息“文件格式和扩展名不匹配..文件可能已损坏”等等。 @QHarr 这是手动打开的时候。并且仅在运行打开、关闭、保存过程之后。 我正在研究这是否是一个已知问题。我以前没有经历过。 【参考方案1】:

我将解决看起来“奇怪”的 Excel。

您希望app.Quit 最后确保您关闭打开的 Excel 应用程序。

如果您不这样做,您将最终导致性能下降并最终崩溃,因为您的资源被未关闭的应用程序实例占用。

【讨论】:

@QHarr 感谢您的快速输入,这正是我所缺少的!在相关说明中,我还注意到,在之后的进程下的任务管理器中,我有一个正在运行的 excel 进程,这也是这个的结果吗?如果是,我如何确保不会发生这种情况? 如果您没有运行过当前工作簿,可能会这样做。不时检查并关闭不必要的总是一个好主意。

以上是关于访问中的 Vba 代码循环遍历文件夹中的所有 excel 文件,打开、保存和关闭它们的主要内容,如果未能解决你的问题,请参考以下文章

让 VBA 循环遍历 Outlook 中的所有收件箱,包括共享收件箱

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中

VBA:循环遍历各种Excel文件并将列复制到主文件中[关闭]

循环遍历指定文件夹中的所有 excel 文件,并从特定单元格中提取数据的代码

vba 遍历指定文件夹(含子目录)获取文件名,哪种方法速度最快?

VBA复制粘贴循环