|
大家都知道,通过执行4.0宏命令可以实现不打开工作簿获取其中工作表中指定单元格的数据。
如: x=Application.ExecuteExcel4Macro("'D:\Temp\[Test.xls]Sheet1'!R1C1")
获得D:\Temp\Test.xls工作簿文件中Sheet1工作表中A1单元格的数值并保存在变量x中。
下面的SheetInWorkbook函数扩展该方法功能实现不打开工作簿文件而判断指定工作簿中是否存在指定名称的工作表,如果存在工作表结果返回True,否则返回结果False。
Function SheetInWorkbook(ByVal sPath As String, ByVal WbName As String, ByVal ShtName As String) As Boolean
Dim x As String
Dim str4Macro As String
On Error Resume Next
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
str4Macro = "'" & sPath & "[" & WbName & "]" & ShtName & "'!R65536C256"
x = Application.ExecuteExcel4Macro(str4Macro)
If Err.Number = 13 Then
SheetInWorkbook = False
Else
SheetInWorkbook = True
End If
End Function
参数说明:
sPath : 一个字符串,指定工作簿路径。
WbName: 一个字符串,工作簿名称(带扩展名)。
ShtName:一个字符串,需要查找的工作表名称。
* 使用该函数需要确保:
1、存在指定的工作簿文件;
2、指定的单元格不包含错误类型或文本。(为规避错误,指定单元格为R65536C256即IV65536.通常情况下不会把工作表都填满并且最后一个单元格还是一个错误类型吧?呵呵)
下面Test1过程判断D盘根目录下的ll.xls工作簿中是否包含名称为Sheet1的工作表。
Sub Test1()
MsgBox SheetInWorkbook("D:", "ll.xls", "Sheet1")
End Sub
通过以上函数的实现原理,可以实现搜索指定路径下是否存在指定工作表名称的工作簿文件,以下过程巧妙的实现在指定路径下搜索存在指定工作表名称的工作簿文件,并在立即窗口中打印工作簿文件名称。
Public Sub SheetExistSpecialPath(ByVal sPath As String, ByVal sShtName As String)
Dim rtn, x As String
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
rtn = Dir(sPath & "*.xls")
On Error Resume Next
sPath = "'" & sPath & "["
Do While Len(rtn) > 0
wb = rtn & "]"
x = Application.ExecuteExcel4Macro(sPath & wb & sShtName & "'!R65536C256")
If Err.Number <> 13 Then
Debug.Print rtn
End If
Err.Clear
rtn = Dir
Loop
End Sub
参数说明:
sPath: 一个字符串,指定工作簿路径。
sShtName:一个字符串,需要查找的工作表名称。
GMT+8, 2024-4-19 18:21 , Processed in 0.019540 second(s), 9 queries , Gzip On, MemCache On.
Powered by Discuz! X3.4
© 1999-2023 Wooffice Inc.
沪公网安备 31011702000001号 沪ICP备11019229号-2
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! 本站特聘法律顾问:李志群律师