vba打开工作表思路求解答

现在想批量打开文件夹中所有文件中的某个工作表,但问题是,不是所有文件都有这个工作表,想问一下当遇到这种文件要如何跳过,然后继续打开后面的文件进行操作

img

On Error Resume Next容错或者写一个函数遍历所有sheet是否存在名字为你那个工作表的名称,存在再继续

On Error Resume Next
If Sheets("xxx") Is Nothing Then MsgBox "xxx sheet不存在"
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7425926
  • 这篇博客也不错, 你可以看下VBA获取指定文件夹下所有文件和子文件目录的文件
  • 除此之外, 这篇博客: Excel·VBA统计表生成函数及应用实例中的 2,汇总的二维横纵统计表,拆分为多行多列数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 对以上COLLECT函数执行相反操作

    Private Function RECOLLECT(arr)
        '函数定义RECOLLECT(数组)对汇总的二维数组数据进行拆分,返回一个多行3列二维数组(返回数组从1开始计数)
        'COLLECT函数与RECOLLECT函数操作相反
        '返回数组为多行3列形式,纵向条件为第1列、横向条件为第2列、值为第3列,值为空则忽略
        Dim brr, r, l, ll, i, j, w, result
        r = (UBound(arr) - LBound(arr) + 1) * (UBound(arr, 2) - LBound(arr, 2) + 1) '返回数组最大行数
        ReDim brr(1 To r, 1 To 3)  '临时返回数组,从1开始计数
        l = LBound(arr)
        ll = LBound(arr, 2)
        For i = l + 1 To UBound(arr)  '原二维数组首行首列都是标题
            For j = ll + 1 To UBound(arr, 2)
                If arr(i, j) <> "" Then
                    w = w + 1
                    brr(w, 1) = arr(i, ll)  '纵向条件为第1列
                    brr(w, 2) = arr(l, j)   '横向条件为第2列
                    brr(w, 3) = arr(i, j)   '值为第3列
                End If
            Next
        Next
        If r = w Then
            RECOLLECT = brr
        Else
            ReDim result(1 To w, 1 To 3)  '返回数组,避免无效部分
            For i = 1 To w
                result(i, 1) = brr(i, 1): result(i, 2) = brr(i, 2): result(i, 3) = brr(i, 3)
            Next
            RECOLLECT = result
        End If
        
    End Function
    
  • 您还可以看一下 陈表达老师的VBA基础编程开发课程课程中的 第51集-插入、复制、移动、删除、重命名工作表小节, 巩固相关知识点