ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索

不打开工作簿搜索包含工作表名称的工作簿文件

已有 2185 次阅读2008-8-25 15:27 |个人分类:原创

大家都知道,通过执行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:一个字符串,需要查找的工作表名称。

测试:
Sub Test2()
    SheetExistSpecialPath "D:", "Sheet1"
End Sub

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 免费注册

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

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

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

返回顶部