大家好,上节介绍工作表事件,本节将介绍工作簿事件,工作簿数量较多,但并没有工作表事件常用,只简单介绍几个常用的工作簿事件。...一、工作簿事件基础 当发生工作簿更改,工作簿中的任何工作表更改,加载宏更改或数据透视表更改时,都可能引发对应的工作簿事件,合理地使用各个事件可以避免一些意料不到的错误,提高代码的可读性和执行效率。...二、工作簿事件分类 工作簿事件的种类很多,但很大一部分事件很难用到,下面图表列出工作簿事件和触发条件。可以收藏备查,根据需要来使用。...比如activate事件中的所作的设置进行清理,恢复excel的初始设置等。这里就不举例说明了。...4、sheetchange事件 sheetchange事件,是当工作簿中任意一个单元格被更改时,自动运行程序。
要创建工作簿的目录,其实就是遍历获取所有的文件,然后过滤一下,再增加超链接就可以: ?...首先在customUI.xml中增加代码: 工作簿目录 " onAction="rbbtnWorkbookDir...result(UBound(RetFiles) + 1, 1) '+1是因为有1个标题,可能会比RetFiles多一个 result(0, 0) = "序号" result(0, 1) = "工作簿名称...ScanDir这个函数在创建MyVBA加载宏中已经提到过。
对于做管理工作的,收集表格这种工作应该会经常有,设计一个表格模板,发给各个有关单位去填写,收集起来后再合并到一起。...合并拆分 " size="large" imageMso="ReviewCombineRevisions"> 工作簿...Then Exit Sub '遍历获取文件 If ScanDir(strDir, RetDirs, RetFiles) = -1 Then Exit Sub '记录活动工作簿...Long Dim flag As Boolean Dim tmp As Workbook For i = 0 To UBound(RetFiles) '过滤活动工作簿和打开的临时文件
个人宏工作簿是一个文件,可以在应用程序开启时运行其中的VBA代码,就像是运行功能区选项卡中的命令一样。创建个人宏工作簿很简单,如下所示。...步骤1:打开一个Excel工作簿,单击功能区“开发工具”选项卡中的“录制宏”命令,在弹出的“录制宏”对话框中,选取“保存在”下拉列表框中的“个人宏工作簿”,如下图1所示。单击“确定”。 ?...图1 步骤2:在工作表中随便选取一个单元格,然后单击“开发工具”选项卡中的“停止录制”。 此时,Excel将自动创建个人宏工作簿文件。...通常,Excel会自动将个人宏工作簿文件保存在默认位置: C:\Users\[insert your username]\AppData\Roaming\Microsoft\Excel\XLSTART...图3 下面,我们将《Excel实战技巧77:实现在当前工作表和前一个使用的工作表之间自由切换》中创建的快捷键功能放到个人宏工作簿中,以便于在所有打开的工作簿中都能使用这个功能。
前面实现了多个工作簿和合并到一个工作簿的功能,反过来,将一个工作簿里的工作表,另存为多个工作簿,然后分发给不同的人,应该也是经常会碰到的。让我们看看使用VBA如何实现: ?...首先在customUI.xml中增加代码: 工作表保存工作簿" onAction="rbbtnSht2Wb" imageMso...IRibbonControl) Call MShtWk.Sht2Wb End Sub 函数实现: Sub Sht2Wb() Dim path As String '保存在活动工作簿同一目录下...Application.ScreenUpdating = False Dim sht As Worksheet For Each sht In Worksheets sht.Copy '按工作表的名称保存工作簿
在使用Excel的时候,偶尔我们又需要打开一些工作簿的所在文件夹去操作,这时候找起来可能就有点麻烦了。...在VBA里使用过Workbook对象就能知道,调用Path属性就能获取到工作簿所在的文件夹,所以,使用VBA就可以快速打开活动工作簿所在的文件夹: ?...rbbtnOpenActiveWbPath" label="打开文件夹" size="large" onAction="rbbtnOpenActiveWbPath" imageMso="FileOpen" supertip="打开活动工作簿所在的文件夹..."""" & Path & """" VBA.Shell "cmd.exe /c explorer " & Path, vbNormalFocus End Sub 函数比较简单,就是获取活动工作簿的...所以程序运行会弹出一个黑窗口,那个就cmd的窗口。 路径有空格的时候我记得是会出问题的,可能原来是XP系统,我电脑WIN7系统测试没有出问题。
以前,我们经常通过Excel宏实现一些自动化的操作控制,比如启动Power Query刷新数据,刷新完毕后再将数据更新到数据库里,然后将这些操作过程放到自动运行宏(workbook_open)过程里,达到启动...Excel即自动运行宏的目的。...运行时,将会出现类似错误:无法打开Excel文档…… 此时,我们其实完全可以取消workbook_open()过程,比如,先注释掉该过程: 然后复制要在workbook_open过程中自动调用的宏名称...: 在Power Automate Desktop里添加“运行Excel宏”步骤,选择前面“启动Excel”步骤中生成的Excel实例,并在“宏”里输入(粘贴)要运行的宏名称即可: 通过这样的方式...,Power Automate Desktop即可按需要自动启动Excel,自动运行相应的宏……实现全流程的自动化处理。
工作表的隐藏很简单,只需要右键点击工作表名称,然后点击隐藏就可以。 但是取消隐藏也差不多,右键点击后,选择某个工作表名称。...这种基本的操作,大多数人Excel用过一段时间的应该都会,所以保证不了其他人不会发现隐藏起来的表格。...其实Excel里还有一个深度的隐藏,这种隐藏后,右键点击取消隐藏是看不到的,这样应该就能瞒过大多数人了。...工作表之外工作表" onAction="rbbtnVeryHideExceptActiveSht...在设置当前工作表隐藏的时候,需要判断工作簿是否还有其他的可见工作表,否则会报错。
学习Excel技术,关注微信公众号: excelperfect 在文件夹中所有文件上运行宏,或者在Excel工作簿中所有工作表上运行宏,这可能是一种非常好的Excel自动化方案。...="" MsgBox "在所有工作簿中都完成了宏执行" End Sub 这段代码完成下列操作: 1.在当前工作簿路径中打开“选择文件”对话框,要求选择一个用于存储所有文件的文件夹。...2.打开一个单独的Excel进程(应用程序),然后逐个打开每个文件。 3.使用要在每个打开的工作簿上运行的代码替换“在这里放置你的代码”部分。 4.每个打开的工作簿在关闭时不会保存所作的修改。...在子文件夹内所有文件中运行宏 当想在文件夹中所有Excel文件上运行宏时,其中的一种情况是遍历所有子文件夹来运行宏。..." End Sub 在工作簿所有工作表中运行宏 代码如下: '本程序来自于analystcave.com Sub RunOnAllWorksheets() Dim folderName As String
学习Excel技术,关注微信公众号: excelperfect 如果你的Excel应用程序依赖于外部加载项(例如分析工具库或规划求解加载项),那么必须确保在运行应用程序之前加载了该加载项。...''' 如果没有,则试图装载该加载项 ''' ''' 参数: szAddInWorkbook 加载项工作簿名.例如,对于Excel 2007或 '''...On Error Resume Next ''' 如果已在加载项列表中选择了需要加载的加载项(如规划求解加载项), ''' 除非切换了Installed属性,否则不会打开其工作簿...MsgBox "规划求解加载项没有装载.", vbCritical, "装载加载项演示" End If End Sub 如果工作簿已经安装了“规划求解加载项”,如下图1所示: ?...图1 运行测试程序DemoLoadAddIn过程,会弹出下图2所示的消息框。 ? 图2 下面是bLoadAddIn函数的图片版: ?
本文接着前两篇文章: 一起学Excel专业开发19:基于Excel的独立式应用程序开发 一起学Excel专业开发20:Excel工时报表与分析系统开发(3)——自定义用户界面 注:这里介绍的自定义用户界面是针对...Excel 2003及以前的版本的,虽然Excel 2007及以后的版本将用户界面由原来的菜单和工具栏修改成了现在的功能区,但仍能加载原来的自定义用户界面,只是将它们放置在功能区“加载项”选项卡中。...代码如下: '从加载宏复制背景工作簿到新建工作簿并进行配置 Sub PrepareBackDrop() Dim wkbBook As Workbook '已经有背景对象吗?...: 1.工作表型的数据输入接口 2.用户窗体 基于工作表的用户接口被设计为最大化地利用Excel的单元格编辑功能,如自动补充完整、数据验证、条件格式等。...专业开发17:Excel工时报表与分析系统开发(2)——创建特定应用加载宏》中,我们使用加载宏和模板创建每周工时表并将它们存储到工作区,ConsolidateWorkbooks过程用来获取这些工时表工作簿并将它们合并和分析
3.构建或打开动态用户接口元素,包括特定应用程序的功能区选项卡、Excel应用程序级的设置、工作簿模板,等等。 4.注册用户自定义函数。...如果加载宏中包括用户自定义函数,就需要在Excel函数向导中添加相应的信息。 5.配置初始的用户接口。...根据加载宏的类型以及启动时的环境条件处理某些特殊设置,例如当打开加载宏时,如果应用程序的工作簿已处于打开状态,那么应用程序中的所有功能区选项卡元素和快捷菜单应均设置为可用,反之则应该使大部分的功能区元素和快捷菜单项不可用...2.处理Excel应用程序事件。应用程序响应由Excel操作所引发的事件。 3.处理运行时错误。当运行时发生错误时,进行处理,避免程序死锁,同时告知用户错误信息。 4.调用其他加载宏中的代码。...在运行时加载宏提供的其他服务,例如用户自定义函数。 关闭 无论是应用程序正常结束还是异常终止,必须完成下面的操作: 1.删除所有特定程序的用户接口组件。
我们知道,有多种方法可以进入“Excel加载宏”对话框。最简单的就是,单击功能区“开发工具”选项卡“加载项”组中的“Excel加载项”,即可打开如下图1所示的的“加载宏”对话框。...如果单击“是”按钮,则运行下面的代码来安装加载宏: If ActiveWorkbook Is Nothing Then AddEmptyBook Set oAddIn =Application.AddIns.Add...(ThisWorkbook.FullName, False) oAddIn.Installed = True RemoveEmptyBooks 第一行代码确保在Excel中至少打开一个工作簿窗口。...最后一行关闭加载项打开的所有工作簿。为什么?因为当没有活动工作簿时你无法打开加载项对话框,显然这也会阻止Excel通过VBA将新加载项添加到列表中。...下面是添加一个空工作簿并再次删除它的代码: Option Private Module Dim moWB As Workbook Sub AddEmptyBook() '如果需要添加一个空工作簿.
标签:VBA 本文接上一篇:运行Excel VBA的15种方法1 方法8:自定义功能区 可以自定义功能区,将宏代码关联到功能区选项卡组中。这种方法尤其适合于组织布置许多自定义宏的运行。...图18 单击“确定”,这样就在Excel功能区中添加了一个名为“我的宏代码”的自定义选项卡,带有一个“新建组”,里面是与要运行的宏关联的命令按钮,如下图19所示。...方法13:从工作表事件中调用VBA过程 可以基于事件来自动运行宏。例如下图22所示的代码。...图22 这段代码在工作表Sheet1代码模块中,当工作表Sheet1中的单元格A1发生变化会自动调用testVBA过程。 方法14:从超链接中运行VBA 单击超链接时触发宏运行,如下图23所示。...方法15:从工作簿事件中调用VBA过程 基于工作簿事件,例如打开或关闭工作簿时自动运行宏。如下图24所示。 图24 你还知道有什么运行Excel VBA的方法吗?
创建的这个带有自定义功能区的Excel加载宏将可以有任意工作簿中使用,下面我们详细讲解其创建过程。...第1 步:创建一个新工作簿,将其保存为启用宏的工作簿(本示例使用名称MyCustomRibbon.xlsm)。 第2步:单击“文件——信息”,选择“属性——高级属性”,如下图1所示。...图1 在“属性”对话框中,“标题”属性显示加载宏名称,“备注”属性显示加载宏详细说明,如下图2所示。 图2 第3步:添加宏。由于自定义功能区的每个命令都需要有相应的事件处理程序,而这需要宏来实现。...图3 第4步:保存为Exce加载宏(“.xlam”)。 单击“文件——另存为”,在“保存类型”下拉列表中选择“Excel加载宏(*.xlam)”,如下图4所示。...图8 此时,在Excel工作簿功能区中出现了一个新的选项卡,如下图9所示。单击选项卡组中的按钮,会调用相应的宏显示信息。 图9 第7步:修改成中文。
Excel 的宏编程有兴趣的可以了解下: Excel 宏编程-第一个Hello World程序,实战演示! 有的 Excel 工具是用宏写的,需要启用宏才可以用,没启用宏可能会有如下报错。...下面来讲一下宏的启用方式: 很简单,点击左上角的菜单,然后点击 Excel 选项进入设置。 ? 然后,在信任中心找到信任中心设置。 ? 在宏设置选择启用宏就好了。...要重新启用 Excel 才能生效哦! ?
Excel在定制方面无疑是出类拔萃的,我们可以根据工作实际需要在Excel中创建自定义的加载项,让Excel更加满足我们的独特需求,提高工作效率。...下面是thespreadsheetguru.com创建的一个自定义功能区的加载宏模板,可以方便地稍作修改,满足定制需求。如下图1所示,我将其进行了汉化,这是初次打开该加载项工作簿后的界面。 ?...你可以在完美Excel微信公众号底部发送消息: 功能区定制 获取该加载项工作簿进行研究。...RunMacro过程:用来设置单击按钮时要运行的宏。 6. GetScreentip过程:用来设置鼠标悬停在按钮上时显示的提示文字。...在使该工作簿满足自已的需要后,将该工作簿存储为加载宏(.xlam)文件。这样,你就可以安装在自已的Excel工作簿中,或者分发给同事安装了。
有时,必须确保用户在打开工作簿时启用宏,否则就不能实现工作簿的效果。由于无法使用宏去打开宏,因此需要一种确保用户启用宏的技术。...下面讲解的方法隐藏除“欢迎”工作表(告诉用户启用宏)之外的所有工作表,并在每次保存工作簿时强制执行该工作表。如果用户在启用了宏的情况下打开工作簿,则宏将不会隐藏所有工作表。...还可以使用Excel的 VeryHidden属性来实现工作表的隐藏,这意味着不能使用Excel的菜单来取消隐藏工作表。但是,这只会影响该工作簿,因此用户可以使用另一个工作簿中的宏取消隐藏所有工作表。...注意:为防止某些事件循环问题,此代码需要覆盖Excel内置的Save事件,并且还需要复制Excel的“工作簿已更改,您要保存”提示和操作,代码负责所有这些工作。...如果用户尝试退出该应用程序,它将关闭工作簿,而不是Excel。再次退出将完全关闭Excel。
使用VBA编写用户自定义函数,不仅可以在程序中进行调用,还可以像Excel内置的工作表函数一样,在工作表公式中使用。...图1 在Excel中,只用于提供用户自定义函数的加载宏称为函数库加载宏,这是最简单的一类加载宏。这样,只要安装了函数库加载宏,就可以在工作表中使用其所包含的自定义函数了。...图3 方法2:使用XLM函数 可以执行一个XLM宏函数来注册自定义函数,具体的代码见Function.xla中的MRegister模块,你可以在完美Excel微信公众号底部发消息: 宏函数注册 下载该工作簿...图4 打开VBE编辑器,双击加载宏工作簿中的ThisWorkbook模块,设置其IsAddin属性值为False,如下图5所示。 ?...图5 此时,将会出现加载宏工作簿界面,单击“文件—信息”,在属性中输入标题、备注、作者等内容,如下图6所示。 ? 图6 保存后,回到图5所示的界面,将IsAddin属性值设置为True。
注:所谓特定应用加载宏,是指只能在专门为它所设计的工作簿上工作的一类加载宏。...Excel工时报表与分析系统(PETRAS)加载宏的功能: 1.启动和初始化应用程序 2.为应用程序的各项功能创建工具栏 3.打开和初始化“工时输入”工作簿 4.允许用户将数据输入工作簿中的内容复制到预先设定好的合并区...”工作簿的所有实例进程 在《一起学Excel专业开发16:使用表驱动的方法管理工作表用户接口》中,我们已经创建了表驱动的用于接口工作簿的工作表。...然后,初始化所有全局变量,这里的两个全局变量,一个用于存放加载宏的完整路径,一个用于指明加载宏是否在关闭过程中。接着,查找用户接口工作簿,如果找到则继续运行程序,否则显示错误信息并退出应用程序。...在接口工作簿初始化完成后,运行过程ResetAppProperties过程,确保Excel应用程序相关的属性均被设置为默认值。
领取专属 10元无门槛券
手把手带您无忧上云