当前位置:  开发笔记 > 数据库 > 正文

打开Excel文件,无需显示即可使用VBA进行读取

如何解决《打开Excel文件,无需显示即可使用VBA进行读取》经验,为你挑选了5个好方法。

我想用宏搜索现有的Excel文件,但我不希望在代码打开这些文件时显示这些文件.有没有办法让它们在"背景"中打开,可以这么说?



1> Patrick McDo..:

不确定是否可以在当前的excel实例中无形地打开它们

您可以打开一个新的excel实例,隐藏它然后打开工作簿

Dim app as New Excel.Application
app.Visible = False 'Visible is False by default, so this isn't necessary
Dim book As Excel.Workbook
Set book = app.Workbooks.Add(fileName)
'
' Do what you have to do
'
book.Close SaveChanges:=False
app.Quit
Set app = Nothing

正如其他人发布的那样,请确保在完成任何已打开的工作簿后进行清理


我强烈建议您在打开目标工作簿之前锁定应用程序会话:`App.AutomationSecurity = msoAutomationSecurityForceDisable``App.EnableEvents = False``App.Calculation = xlCalculationManual` - 您可以考虑枚举AddIns集合并禁用它们,也是:**缓慢加载启动会延迟应用会话**的启动.

2> Patrick Hono..:

如果这符合您的需求,我会简单地使用

Application.ScreenUpdating = False

还有加速代码的好处,而不是通过使用第二个Excel实例来降低代码速度.



3> Ashok..:

要打开隐藏在现有Excel实例中的工作簿,请使用以下命令:

    Application.ScreenUpdating = False
    Workbooks.Open Filename:=FilePath, UpdateLinks:=True, ReadOnly:=True
    ActiveWindow.Visible = False
    ThisWorkbook.Activate
    Application.ScreenUpdating = True



4> AnonJr..:

即使您已得到答案,对于那些发现此问题的人,也可以将Excel电子表格作为JET数据存储打开.借用我用过它的项目的连接字符串,看起来有点像这样:

strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objFile.Path & ";Extended Properties=""Excel 8.0;HDR=Yes"""
strSQL = "SELECT * FROM [RegistrationList$] ORDER BY DateToRegister DESC"

请注意,"RegistrationList"是工作簿中选项卡的名称.网上有一些教程,其中包含您可以和不可以通过这种方式访问​​工作表的详细信息.

只是想我会添加.:)



5> Anthony Lusa..:

一种更简单的方法,不涉及操纵活动窗口:

Dim wb As Workbook
Set wb = Workbooks.Open("workbook.xlsx")
wb.Windows(1).Visible = False

从我可以告诉我的工作簿上的Windows索引应该始终如一1.如果有人知道任何会导致这种不真实的竞争条件,请告诉我.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有