excel的VBA里面的WorkBooks.Open的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel的VBA里面的WorkBooks.Open的问题相关的知识,希望对你有一定的参考价值。
现在我有一些列的xls文件,要依次用WorkBooks.Open打开读取一些数据,但是使用这个方法的时候,其中一部分文件会报错“方法Open作用于对象Workbooks时失败”或者 “检测到此文件存在一个问题.要帮助保护你的计算机”
现在我想要如果出现这种情况就跳过这个文件不打开,如何可以在WorkBooks.Open这个方法前判断一个文件是否可以正常打开?
将你的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,打开相关工作簿追问
那如果是“检测到此文件存在一个问题.要帮助保护你的计算机”
这个问题呢?
Dim mypath As String
Dim myfile As String
mypath = "d:\123\"
myfile = "a.xls"
Workbooks.Open mypath & myfile, , True
End Sub
在OPEN中的第三个参数。=TRUE表示,为只读方式打开。
测试OK!追问
这个方法试过不行。。。
参考技术B 首先取得这个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
每日Excel分享(VBA)| 正则表达式在Excel VBA中的应用
感
谢
感谢每一个朋友的关注与支持,感谢所有的不离不弃,一路同行!
关
注
导读
前两天分享了一篇关于VBA与正则表达式的文章,里面写了如何利用VBA与正则表达式去除字符串中除中文之外的其他字符,只保留中文。
这两天有朋友问我如果要只保留数字或只保留字母该怎么办?所以今天村长再来补充一下其他正则表达式在VBA中的应用。
按ALT+F11弹出VBE窗口,然后新建模块,如下图:
只保留中文的代码如下:
Function ZW(i As String) As String
Dim a As Object
Set a = CreateObject("VBSCRIPT.REGEXP")
a.Pattern = "[^\u4e00-\u9fa5]"
a.IgnoreCase = True
a.Global = True
ZW = a.Replace(i, "")
Set a = Nothing
End Function
只保留数字的代码如下:
Function SZ(i As String) As String
Dim a As Object
Set a = CreateObject("VBSCRIPT.REGEXP")
a.Pattern = "[^0-9]"
a.IgnoreCase = True
a.Global = True
SZ = a.Replace(i, "")
Set a = Nothing
End Function
只保留字母的代码如下:
Function ZM(i As String) As String
Dim a As Object
Set a = CreateObject("VBSCRIPT.REGEXP")
a.Pattern = "[^A-Z^a-z]"
a.IgnoreCase = True
a.Global = True
ZM = a.Replace(i, "")
Set a = Nothing
End Function
只保留数字和字母的代码如下:
Function SZZM(i As String) As String
Dim a As Object
Set a = CreateObject("VBSCRIPT.REGEXP")
a.Pattern = "[^A-Z^a-z^0-9]"
a.IgnoreCase = True
a.Global = True
SZZM = a.Replace(i, "")
Set a = Nothing
End Function
保存完代码之后我们回到表格里面,在单元格输入我们刚才写的自定义函数,如下图:
坚持!坚持!再坚持!
致各位亲
每日一歌
羽泉《冷酷到底》
以上是关于excel的VBA里面的WorkBooks.Open的问题的主要内容,如果未能解决你的问题,请参考以下文章
请问Excel 里面的 VBA 具体能做啥?都有哪些实际的用途?