设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel技巧] Excel VBA(宏)有多强大?看了这几个Excel功能就服了!

[复制链接]
跳转到指定楼层
楼主
发表于 2017-1-19 22:10:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
                               

                        excel为提供了很多好用的功能和函数,但还是有很多工作无法用现有功能和函数批量完成,比如多个excel表格的合并与拆分,而借助VBA语言编写的宏代码,这些看似无法批量处理或无法完成的事情,瞬间变得只是小菜一碟,也许你不懂VBA,也建议先收藏起来这些代码备用。
        (第1个示例中,演示了VBA代码的使用方法,后面示例均和第1个类似,不再具体演示)
        1、一次取消所有工作表的隐藏
        Excel可以一次隐藏多个工作表,但取消工作表隐藏却需要一个个的设置,用VBA编写一段代码,一秒完成!
        注意
        要想使用VBA功能,需要把代码粘贴到添加的模块中,详见动画演示
        要想保存VBA代码,需要把文件另存为xlsm格式文件,详见动画演示
        动画演示:
       

        代码:
        Sub 取消隐藏()
        For x = 1 To Sheets.Count
        If Sheets(x).Name <> "总表" Then
        Sheets(x).Visible = -1
        End If
        Next x
        End Sub
        Sub 隐藏()
        For x = 1 To Sheets.Count
        If Sheets(x).Name <> "总表" Then
        Sheets(x).Visible = 0
        End If
        Next x
        End Sub
        2、根据模板批量生成日报表
        根据模板批量生成报表,没什么好方法,只能一个一个的复制然后修改名称。但这对VBA来说,只需点一下按钮即可瞬间完成。
       

        代码:
        Sub 生成报表()
        Dim x As Integer
        Dim sh As Worksheet
        For x = 1 To 31
        Set sh = Sheets.Add
        With sh
        .Name = x & "日"
        Sheets("日报模板").Range("1:15").Copy sh.Range("A1")
        End With
        Next x
        End Sub
        3、拆分工作表为单独的excel文件
        把当前excel文件中除第1个工作外的所有工作表,均保存为单独的excel文件到3月文件夹中。
        拆分演示(在拆分过程中会画面会停几秒,请耐心等待)
       

        代码:
        Sub 拆分表格()
        Dim x As Integer
        Dim wb As Workbook
        Application.ScreenUpdating = False
        For x = 2 To 32
        Sheets(x).Copy
        Set wb = ActiveWorkbook
        With wb
        .SaveAs ThisWorkbook.Path & "/3月/" & Sheets(x).Name & ".xlsx"
        .Close True
        End With
        Next x
        Application.ScreenUpdating = True
        End Sub
        4、合并多个Excel文件工作表到一个文件中
        3月文件夹下有N张报表,要求把该文件夹中所有excel文件的第1个工作表合并到当前的excel文件中,以单独的工作表存放。
       

        代码:
        Sub 合并表格()
        Dim mypath As String
        Dim f As String
        Dim ribao As Workbook
        Application.ScreenUpdating = False
        mypath = ThisWorkbook.Path & "/3月/"
        f = Dir(ThisWorkbook.Path & "/3月/*.xlsx")
        Do
        Workbooks.Open (mypath & f)
        With ActiveWorkbook
        .Sheets(1).Move after:=ThisWorkbook.Sheets(Sheets.Count)
        End With
        f = Dir
        Loop Until Len(f) = 0
        Application.ScreenUpdating = True
        End Sub
               
                               
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-4-29 13:30 , Processed in 0.194302 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表