excel的VBA里面的WorkBooks.Open的问题

现在我有一些列的xls文件,要依次用WorkBooks.Open打开读取一些数据,但是使用这个方法的时候,其中一部分文件会报错“方法Open作用于对象Workbooks时失败”或者 “检测到此文件存在一个问题.要帮助保护你的计算机”
现在我想要如果出现这种情况就跳过这个文件不打开,如何可以在WorkBooks.Open这个方法前判断一个文件是否可以正常打开?

通常情况下,我们应该避开重复打开文件,如果你略懂VBA,请使用下面代码测试:
将你的WOrkBooks.Open("D:\xx.xls")
改成如下:

Dim Wb as WorkBook '定义一个wb工作簿变量
On Error Resume Next '容错
Set wb = WOrkbooks("xx.xls")
'先引用xx.xls工作簿,如果该工作簿没有打开,那么将发生错误9;如果已经打开,将跳过下面这句打开工作簿的代码!
If Err.Number = 9 Then Set wb = WorkBooks.Open("D:\xx.xls") '捕获错误9,打开相关工作簿追问

那如果是“检测到此文件存在一个问题.要帮助保护你的计算机”
这个问题呢?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-01
Sub a()
Dim mypath As String
Dim myfile As String
mypath = "d:\123\"
myfile = "a.xls"
Workbooks.Open mypath & myfile, , True
End Sub

在OPEN中的第三个参数。=TRUE表示,为只读方式打开。

测试OK!追问

这个方法试过不行。。。

第2个回答  2018-11-06
首先取得这个excel的名称
然后做个判断,获取的新工作簿,是不是当前激活的工作簿,如果不是,则执行打开。
代码如下:
Sub MultiModi()
Dim wb As Workbook
Dim fn, fp, sh
Dim m As Integer, l As Integer
m = 0
l = 1
fp = ThisWorkbook.Path & "\" '获取当前工作簿所在路径
fn = Dir(fp & "*.xls") '取得第一个工作簿的文件名(如果是2007版,则后缀名请改为 *.xlsx)
'先将带宏的表修改
Do While fn <> ""
If fn = ActiveWorkbook.Name Then
MsgBox "问题在这里"
Else
Set wb = Workbooks.Open(fp & fn) '打开工作簿
需要操作的代买放这里
loop
end sub

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网