精华内容
下载资源
问答
  • 快速批量删除工作表

    千次阅读 2018-04-05 10:58:17
    此时,你就不得不点击【删除】按钮确认才可以删除工作表,如果要批量删除多个工作表,那么就需要不停的点击按钮,VBA代码实现自动化操作的目的就无法实现。 解决方案 Excel为了避免用户的误操作,每次删除工作表...

    前言

    删除工作表是VBA代码开发过程中经常用到的操作,一行代码就可以完成,这有啥可讲的呢!?代码一执行,是否就看到下面这个令人烦的窗口跳出来了。

    此时,你就不得不点击【删除】按钮确认才可以删除工作表,如果要批量删除多个工作表,那么就需要不停的点击按钮,VBA代码实现自动化操作的目的就无法实现。

    解决方案

    Excel为了避免用户的误操作,每次删除工作表都会给出提示信息,用户确认后才会执行删除操作,这个机制是Excel的安全机制,无法取消。但是可以利用系统设置屏蔽这个提示信息,以实现无人干预的自动化操作。为了方便调用,将代码封装成独立的过程。

    Sub DelSheets(vShtName, Optional sWkName As String)
        Dim sName
        With Application
            .DisplayAlerts = False
            On Error Resume Next
            If Len(sWkName) > 0 Then
                Set objWk = ActiveWorkbook
            Else
                Set objWk = Workbooks(sWkName)
            End If
            If VBA.IsArray(vShtName) Then
                For Each sName In vShtName
                    objWk.Sheets(sName).Delete
                Next
            Else
                objWk.Sheets(sShtName).Delete
            End If
            On Error GoTo 0
            .DisplayAlerts = True
        End With
    End Sub

    DelSheets过程有两个参数:

    • vShtName是必选参数,用于指定需要删除的工作表名称, 可以单个工作表,也可以是多个工作表名称组成的数组。
    • sWkName是可选参数,用于指定工作表所隶属的工作簿。
      调用代码如下:
    '删除单个工作表
    Call DelSheets("Sheet1")
    '删除多个工作表
    Call DelSheets(Array("Sheet1","Sheet3","Sheet3"))

    代码解析

    此过程的核心代码如下:

    Application.DisplayAlerts = False
    On Error Resume Next

    第一行代码禁止显示系统告警信息,删除工作表时就不会出现提示对话框,在过程结束前,需要回复系统设置Application.DisplayAlerts = True
    第二行代码忽略系统错误,也就是忽略删除工作表可能产生的异常错误,在过程结束前,需要回复系统设置On Error GoTo 0

    VBA.IsArray(vShtName)用于判定参数vShtName是否是数组。

    • 如果vShtName是数组,则返回值为True,属于批量删除工作表。For Each sName In vShtName遍历数组中的元素(工作表名称),然后逐个删除。
    • 如果vShtName不是数组,那么就是单个工作表名称,可以直接进行删除操作。
    展开全文
  • 工作表的基础操作 上一章我们学习了工作表的一些操作,这一章就来学习一下对工作簿的操作 工作表和工作簿有什么区别呢? 一个excel文件就是一个excel工作簿例如abc.xls,一个工作簿中包含1个到若干个工作表...

     

                                               工作表的基础操作

    上一章我们学习了工作表的一些操作,这一章就来学习一下对工作簿的操作

    • 工作表和工作簿有什么区别呢?

    一个excel文件就是一个excel工作簿例如abc.xls,一个工作簿中包含1个到若干个工作表例如sheet1,也就是说工作簿是由工作表组成的。

    下面我们就来了解一下工作簿的操作

    • 打开工作簿

    Application.displayAlerts=false   //点击保存会有弹框出现,所以要先关闭弹框

    Application.screenUpdating =false   //操作工作簿桌面会出现闪动。也先关闭掉

    Workbooks.open filename:=”d:\data\1.xlsx”  //打开D盘data文件下的1.xlsx工作簿

    Activeworkbook.sheets(1).range(“a1”)=”到此一游”  // Activeworkbook表示当前活动的工作簿。Activeworkbook.sheets(1).range(“a1”)指当前活动的工作簿的第一个工作表的A1单元格填写”到此一游”。证明我们真的打开过。

    Activeworkbook.Save  //保存一下刚刚做的修改

    Activeworkbook.close //关闭工作簿

    Application.displayAlerts=true   //开启

    Application.screenUpdating =true  //开启

     

    • 新建工作簿

    Application.displayAlerts=false

    Application.screenUpdating =false

    Workbooks.add  //新建一个工作簿

    Activeworkbook.sheets(1).range(“a1”)=”到此一游haha” //新建工作簿会自动打开,默认有一个sheet1工作表,我们在新建工作簿的第一个工作表的A1单元格填写”到此一游”。证明我们的操作成功了。

    Activeworkbook.Save   //保存一下,新建文档默认会保存到文档目录下面,你可以手动新建一个工作簿直接点保存看一下默认地址。

    Activeworkbook.close  //关闭

    Application.displayAlerts=true

    Application.screenUpdating =true

     

    • 保存工作簿

    Activeworkbook.SaveAsfilename:=”d\data\2.xlsx”

     

    • 关闭工作簿

    Activeworkbook.close

     

    • Foreach 的用法

    前几章我们一张掌握了for的用法,今天来介绍for的另一种写法。。

    有点像php语言的写法,下面我们通过两段代码来更直观的了解for each

     需求1:将单元格A1 到A10 都赋值1

    For的写法:

    Dim i as integer For i=1 to 10    Range(“a” & i)=iNext

    For each的写法:

    Dim ra as range  For each ra in range(“a1:a10”)   ra=1  //上面我们定义了ra as range,ra是单元格类型,表示a1到a10单元格  Next

     

    需求2:将单元格A1 到A10 赋值为他们各自的下标

    For的写法:

    Dim i as integer For i=1 to 10    Range(“a” & i)=i  Next

     

    For each的写法:

    Dim ra as range     For eachra in range(“a1:a10”)       i=i+1    //  每次循环i+1,i初始值默认是0       Ra=i   //等价于range(“a”& i)= i    Next
    

    学会了for each 我们来实战一下

    案例1

    题目:

        除了叫“绝不能删”的表不删除外,批量删除工作簿中的其他表。

    分析:

       1. 要判断每一张表的名字,不等于“绝不能删”,执行删除操作

       2.要定义一个变量类型为工作表dim sht as worksheet

       3.执行删除操作会有提示弹框要事先关闭

    代码:

    sub del()Dim sht as worksheetApplication.displayAlerts=false  //执行删除操作会有弹框出现,所以要先关闭弹框  For each sht in sheets    If sht.name <>”决不能删” then      sht.delete    End if  NextApplication.displayAlerts=trueend sub
    

    案例2

    题目:

    将工作簿中的所有工作表另存为一个个excel文件,另存地址为d:\data

     

    代码:

    sub chaifen()
    
    For each sht in sheetsSht.copy    // copy不指定位置默认新建一个工作簿Activeworkbook.SaveAs filename:=”d\data\”& sht.name & ”.xlsx” //文件路径Activeworkbook.close//关闭Nextend sub
    

     结果如下图:

    对数据分析或者vba有兴趣的朋友可以关注我的公众号,我会在公众号里面发学习笔记,全是干货。一起学习一起成长!

     

     

     

     

    展开全文
  • SUB 批量增加命名工作表() For L = 1 To 100 Sheets.Add(, Sheets("发票表头")).Name = ...SUB 批量删除工作表() Application.DisplayAlerts = 0 ‘’‘关闭提示 On Error Resume Next X = Worksheets.Count For i ...
    SUB 批量增加命名工作表()
     For L = 1 To 100
    Sheets.Add(, Sheets("发票表头")).Name = "发票表" & i
    NEXT
    
    END SUB
    
    SUB 批量删除工作表()
    Application.DisplayAlerts = 0  ‘’‘关闭提示
    On Error Resume Next
    X = Worksheets.Count
    For i = 1 To X 
    
    Worksheets("发票表" & i).Delete
    Next
    Application.DisplayAlerts = 1
    MsgBox ("完成" & X - 3 & "个工作表删除!")
    end SUB
    
    展开全文
  • 1、VBA小代码,批量取消隐藏工作表 Sub 批量取消隐藏工作表() Dim sht As Worksheet '定义变量 For Each sht In Worksheets '循环工作簿里的每一个工作表 sht.Visible = xlSheetVisible '将工作表的状态设置...

    1、 VBA小代码,批量取消隐藏工作表

    Sub 批量取消隐藏工作表()
        Dim sht As Worksheet
        '定义变量
        For Each sht In Worksheets
        '循环工作簿里的每一个工作表
            sht.Visible = xlSheetVisible
            '将工作表的状态设置为非隐藏
        Next
    End Sub

     2、VBA小代码,批量取消隐藏工作表并且删除

    Sub 批量取消隐藏工作表并且删除()
        Dim sht As Worksheet
        For Each sht In Worksheets
            '如果不是显示状态(返回值是0,也可以写为:(xlSheetVisible)),则删除
            If sht.Visible <> xlSheetVisible Then
                sht.Visible = xlSheetVisible
                Application.DisplayAlerts = False    '删除时不用确认
                sht.Delete
            End If
        Next
        '恢复确认,其实很多人不写这一句,作为小程序写不写倒也无所谓的啦,不影响你后面的程序执行,不过如果你的代码很多,流程很长,建议还是写上去,防止预期之外的的错误发生
        Application.DisplayAlerts = True
    End Sub

    3、不写代码--批量删除隐藏工作表,使用office自带的文档检查器即可。

    文件→选项→信任中心→信任中心设置→隐私选项→文档检查器→隐藏的工作表→检查→全部删除

    PS:如果是office2013或者2016,文档检查器可能是在个人信息选项里面(文末有备注)

    PS:如果是office2013或者2016,文档检查器可能是在个人信息选项里面(文末有备注)(与上方呼应~)

     

    展开全文
  • 需求① 在一个工作簿(workbook)中根据已知的工作表名称创建多个工作表并分别命名,可以创建同时当然需要研究增删改工作表。思路:研究vba的基础语法,知道了workbooks(工作簿集)、workbook(工作簿)、worksheet...
  • 【代码模板004】VBA快速删除工作表

    千次阅读 2018-03-01 02:34:00
    老规则 —— 先删除再创建,删除工作表很简单嘛,Sheets(..).Delete一句代码搞定。怎么又弹出一个消息窗口,Excel的产品经理考虑过宝宝们的用户体验吗!?删除工作表也搞得这么复杂,又不是从银行账户里转...
  • MySQL批量删除表

    千次阅读 2014-12-28 19:12:42
     之前在工作中调试时建了一个每分钟执行一次的cron定时任务,每分钟均产生一个带时间信息的名称,并忘了删除这个定时任务,待发现时已经有将近3000个新建的了,由于单条单条地删除很慢,现需要批量删除这些带...
  • Sub delSheet() Dim x As Worksheet Application.DisplayAlerts = False For Each x In Sheets If IsEmpty(x.UsedRange) And x.Shapes....程序如上,笔者使用EXCEL2007,上百个工作表删除空白无内容的SHEET。 ...
  • 7, 9, 10, 12, 13, 15, 16行的代码,使用这个批量删除行的代码要注意以下几点:1)该代码只用于批量删除代码所在文件目录下(不含子目录)与 “*.xls*”后缀匹配的所有工作薄l所有工作表第6, 7, 9, 10, 12, 13, 15,...
  • 一键删除特定名称的工作表
  • 今天在做批量导入大量到数据库去,有250个,但是前期需要做些测试工作,所以会需要进行删除,但是呢,太多了,不可能一个一个的删除。所以在网上找了些批量删除表的sql语句。当然这种删除需要的名字有相同...
  • 注意:执行执行完成后静等10秒钟再关闭,excel保存后没那么快关闭,保存完成后延迟10秒钟...python写的excel批量解除工作表保护,支持多个密码,源代码 https://liuqingbai.blog.csdn.net/article/details/111953841
  • SQL SERVER 批量删除数据库

    千次阅读 2013-08-30 15:59:46
    今天在做批量导入大量到数据库去,有250个,但是前期需要做些测试工作,所以会需要进行删除,但是呢,太多了,不可能一个一个的删除。所以在网上找了些批量删除表的sql语句。当然这种删除需要的名字有相同...
  • SQL Server 批量删除数据库

    千次阅读 2013-05-27 18:23:56
     今天在做批量导入大量到数据库去,有250个,但是前期需要做些测试工作,所以会需要进行删除,但是呢,太多了,不可能一个一个的删除。所以在网上找了些批量删除表的sql语句。当然这种删除需要的名字有...
  • matlab开发-删除Excel文件中的工作表删除选定工作表或Excel文件中的所有空工作表
  • wps批量删除sheet 批量删除工作簿

    千次阅读 2020-11-19 18:10:18
    步骤: 比如需要删除名为 1 和 14的范围sheet工作簿 ... 按着shift键不放的情况下 点击"最后一个"按钮(位于wps左下角)(这时候会自动跳转到最后一个工作簿) 仍然不要释放shift 点击最后一个工作...wps批量删除sheet ...
  • DataWorks使用之批量删除数据

    千次阅读 2017-09-05 11:39:59
    比如要在这茫茫多的数据中,删除表名包含字符串“temp_”的临时数据,管理员这时该如何操作,才能快速的找到这些数据,并删除它们呢?请往下看: 首先用户登录管理控制台,进入DataWorks的工作台页面,然后...
  • VBA 工作表的添加与删除

    千次阅读 2012-05-22 14:39:50
    工作表的添加与删除 在工作簿中添加工作表使用Add方法,如下面的代码所示。 #001 Sub Addsh() #002 Dim Sh As Worksheet #003 With Worksheets #004 Set Sh = .Add(after:=Worksheets(.Count)) #...
  • 昨晚写一代码,将备将某目录下EXCEL中的某一工作表(同名“sheet2”)批量删除代码如下,成功删除之后发现奇怪问题,被删除处理过的EXCEL文件打开后发现是什么都没有,一张工作表都没有,但用 VB编辑器查看,却发现...
  • 当一个工作簿里有大量工作表时,如果有保护,用这个可以批量取消有保护的工作表,当中的“123456”是填写你自己的密码,没有密码的可以不管,直接运行宏.
  • 批量重命名excel工作表

    千次阅读 2014-12-16 22:36:41
    (1)新建一个工作表,置于最前,在第一列输入 0 1 2 3 ... ,实现按第一列内容重命名工作表。 (2)按下ALT+F11,打开VBE窗口,单击插入——模块,复制下面代码,并运行   Sub 按A列数据修改表名称()  On ...
  • 批量修改Excel工作表中的批注.rar,为了对特定内容进行解释说明,用户经常会在工作表中使用批注功能。Excel默认的批注内容为“用户名:注释内容”。当工作簿发布时,作者可能希望将一部分注释中的用户名进行修改或...
  • 在工作簿中添加工作表使用Add方法;在工作簿中批量添加工作表方法;使用错误处理语句来绕过错误;
  • 那其实也可以把多个工作表合并为一个。 继续之前的例子,我们把汇总表删除 如下 把表 1,2,3 合并到sheet5中 合并代码如下: Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = Fals...
  • VBA-工作表中一次插入(删除)多行

    千次阅读 2020-02-24 22:25:35
    工作表中一次插入(删除)多行 1、插入多行 在工作表中一次性插入多行,需要使用insert方法,下面针对在第三行位置处插入4行空行为例,介绍三种方法: 循环四次,每次插入一行 通过单元格选中整行进行插入行 直接选中...
  • 在工作中,有时我们需要同一工作簿中的所有工作表进行相同的操作,如编辑、删除等。如果挨个工作表进行设置太慢,那么如何提高工作效率呢?这时就需要批量选中工作表。这里介绍二种简单快速的方法,具体方法如下: ...
  • 【VBA】工作表删除所有图片、形状

    千次阅读 2018-11-07 11:13:13
    Dim shp As Object  For Each shp In ActiveSheet.Shapes  shp.Delete  Next shp  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 296,809
精华内容 118,723
关键字:

怎么批量删除工作表