标签:VBA,加载宏 在“.xlsm”文件及其转换为的加载项文件“.xlam”之间来回切换并不是一件很容易的事。...下面是www.wimgielis.com中提供的一个示例,在Personal.xlsb(个人宏工作簿)中,还添加了五个过程在xlsm版本(主要用于开发)和xlam版本(主要用来测试和使用)之间切换: Addin_SAVE_AS...:卸载xlam版本,将打开xlsm版本 Addin_TOGGLE_VISIILITY:使xlam版本可见或不可见 可以在原网站搜索并下载示例代码工作簿。...也可以在完美Excel微信公众号中发送消息: 切换加载宏 获取示例代码工作簿的下载链接。 或者,直接到知识星球App完美Excel社群中下载示例代码工作簿。...)都存储在加载宏的默认文件夹中。
创建的这个带有自定义功能区的Excel加载宏将可以有任意工作簿中使用,下面我们详细讲解其创建过程。...第1 步:创建一个新工作簿,将其保存为启用宏的工作簿(本示例使用名称MyCustomRibbon.xlsm)。 第2步:单击“文件——信息”,选择“属性——高级属性”,如下图1所示。...图1 在“属性”对话框中,“标题”属性显示加载宏名称,“备注”属性显示加载宏详细说明,如下图2所示。 图2 第3步:添加宏。由于自定义功能区的每个命令都需要有相应的事件处理程序,而这需要宏来实现。...图7 在“加载宏”对话框中,选择刚才创建的“自定义界面加载宏”,如下图8所示。如果在“可用加载宏”列表中没有出现自已创建的加载宏,则单击“浏览”按钮,导航到加载宏所在的文件夹,选择该加载宏即可。...图8 此时,在Excel工作簿功能区中出现了一个新的选项卡,如下图9所示。单击选项卡组中的按钮,会调用相应的宏显示信息。 图9 第7步:修改成中文。
然后,有两个关于插件文件存储位置的检查。如果用户直接打开压缩文件(zip文件)下载,然后打开加载项,则xlam文件将存储在临时位置(如果安装了解压缩软件),或者位于名称中包含.zip的文件夹中。...Excel可以打开此类文件,但无法安装zip文件夹中的加载项。并且压缩软件会在关闭后立即删除Temp中的该文件夹。然后,会在Excel中得到一个指向已安装加载项的指针,该加载项没有随附的xlam文件。...Application.AddIns.Add(ThisWorkbook.FullName, False) oAddIn.Installed = True RemoveEmptyBooks 第一行代码确保在Excel中至少打开一个工作簿窗口...最后一行关闭加载项打开的所有工作簿。为什么?因为当没有活动工作簿时你无法打开加载项对话框,显然这也会阻止Excel通过VBA将新加载项添加到列表中。...下面是添加一个空工作簿并再次删除它的代码: Option Private Module Dim moWB As Workbook Sub AddEmptyBook() '如果需要添加一个空工作簿.
xls xlsx xlsb xlsm xltx xlam 1,2,3,4,5,6 一共6个格式 这就是我们今天要说的六个Excel格式 xls 这是我刚学习Office时候的格式 那时候还是Excel...xlsb 关于这个格式 我们同样只需要知道 它可以保存Excel文件中的代码 但是文件体积比xlsm更小 至于功能上有没有其他影响我还没有发现 如果你发现了 不妨和我分享一下 扩展一下 xltx...这个格式叫'模板'格式 双击这个格式的文件 会自动新建一份该文件的副本 并在保存的时候另存为新的文件 如果要编辑这个格式的文件 得右键→打开 可以用在票据打印的时候 xlam 这个格式叫'加载宏' 类似于我们常常见到的各种...Excel工具箱或Excel内置的数据分析等等 你也可以做一份自己常用的功能文件保存为xlam文件 加载到自己电脑上的Excel里 以后每次打开就有你独特的功能了 总结一下 来个明细对比表 - xls...次方 16次方和20次方 顺带提一下常见的一个错误提示 这种一般是因为你在两个工作簿之间全选复制粘贴 而这两个工作簿中的行列不同所导致的 你只需要 1 只复制粘贴数据区域 2 将一个表另存为与另外一个表相同的格式即可
Excel在定制方面无疑是出类拔萃的,我们可以根据工作实际需要在Excel中创建自定义的加载项,让Excel更加满足我们的独特需求,提高工作效率。...下面是thespreadsheetguru.com创建的一个自定义功能区的加载宏模板,可以方便地稍作修改,满足定制需求。如下图1所示,我将其进行了汉化,这是初次打开该加载项工作簿后的界面。 ?...当然,“我的选项卡”、“组名”、“按钮”等自定义选项卡上的名称都可以方便进行修改为自已的实际名称,下面我们会逐一讲解。...你可以根据需要在代码窗口中修改上述6个过程的代码,使自定义功能区满足自已的需求。 在使该工作簿满足自已的需要后,将该工作簿存储为加载宏(.xlam)文件。...这样,你就可以安装在自已的Excel工作簿中,或者分发给同事安装了。
自定义选项卡,就像Excel自带的选项卡一样;自定义选项卡有两种形式; 方式二: ?...优点:在任何工作簿都可以运行程序,而且不用担心,加载失败的问题 方式二:直接架加载宏文件(xlam或者xla),然后在Excel设置里设置自定义菜单栏,选择相应的宏即可!...方式二设置步骤: 1.先准备一个xlam宏文件(写一个简单的示例代码); ? 2.另存为xlam或者xla(保存默认路径即可) ?...6.选择命令加载到新建组中(这里我们选择宏,来加载我们刚刚写的测试程序,注意:要加载我们保存到addin文件夹xlam文件的程序) ? ?...7.点击添加后会看到新建的选项卡里面已经加载了我们写的程序 ? ? 8.点击即可运行 ? 谢谢关注与支持!!
''' 如果没有,则试图装载该加载项 ''' ''' 参数: szAddInWorkbook 加载项工作簿名.例如,对于Excel 2007或 '''...更高版本,规划求解加载项是SOLVER.XLAM. ''' szAddInName 出现在加载项对话框列表中的加载项名. ''' 例如...On Error Resume Next ''' 如果已在加载项列表中选择了需要加载的加载项(如规划求解加载项), ''' 除非切换了Installed属性,否则不会打开其工作簿...", vbInformation, "装载加载项演示" Else ''' 在真实开发的应用程序中应通过错误处理发送下面的消息....", vbCritical, "装载加载项演示" End If End Sub 如果工作簿已经安装了“规划求解加载项”,如下图1所示: ?
主要内容: Excel事件的类别 编写事件处理程序代码 启用和禁用事件 工作簿、工作表和应用程序级事件 如何使用与对象无关的事件 事件是Excel编程的重要组成部分。...有三类事件: 事件始终是用户操作的结果,例如单击用户窗体上的控件或按某个键 用户操作或VBA代码可能引起的事件,例如打开工作簿或激活图表 与用户操作无关的事件,例如一天中的特定时间的发生 总体而言,Excel...随后的内容将提供了有关事件放置的一些具体建议,这里是一些准则: 用户窗体(及其控件)的事件过程应始终放在用户窗体模块本身中。 工作簿、工作表或图表的事件过程应始终放置在与该工作簿关联的工程中。...下面是一个示例:将在工作簿中添加新工作表时,将按以下顺序触发下列三个应用程序级事件: 当添加新的工作表时,将发生WorkbookNewSheet。...何时需要禁用事件?当事件过程中的代码直接或间接导致再次触发同一事件时。 下面是一个例子。 只要修改工作表中的数据,就会触发Worksheet_Change事件。
支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...#660, #764, #1093, #1112 和 #1133 新增 API: SetWorkbookPrOptions 和 GetWorkbookPrOptions 支持设置和获取工作簿中的 FilterPrivacy...与 CodeName 属性,以解除部分情况下向工作簿中嵌入 VBA 工程时的限制,相关 issue #1148 公式计算引擎支持中缀运算符后包含无参数公式函数的计算 支持以文本形式读取布尔型单元格的值...兼容性提升 提升与 LibreOffice 电子表格应用程序的兼容性,修复在 LibreOffice 中打开的工作表名包含空格时,自动过滤器失效的问题,解决 issue #1122 提升对工作簿中替代内容的支持...,保留工作簿、工作表以及 drawingML 中的替代内容 提升与页面设置中打印质量 DPI 设置属性的兼容性 问题修复 修复另存为工作簿时,页面布局属性丢失的问题,解决 issue #1117 修复部分情况下
,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。...支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...ActiveTab我在微软文档没有找到,我猜测是活动视图队列的工作表序号。...if len(wb.Sheets.Sheet) >= 1 { return wb.Sheets.Sheet[0].SheetID } 如果工作簿视图不存在,或者工作簿视图数量等于0,并且工作表的数量大于等于...,然后如果工作簿为空,就会导致sheetID := f.getActiveSheetID()获取的工作表ID为0,所以会返回0。
学习Excel技术,关注微信公众号: excelperfect 在上一篇文章中,建议加速检索已使用单元格区域最后一行方法之一是使用缓存和Application对象的AfterCalculate事件。...首先声明一个包含1000行和2列的模块级别数组(UsedRows)。每行将在第1列(工作簿名称和工作表名称)中保存一个键,并在第2列中保存该工作簿中该工作表已使用单元格区域中的行数。...假设只缓存包含这些用户自定义函数的前1000个工作表! 键或标签是通过将调用单元格的父级名称(即工作表)与调用单元格的父级名称的父级名称(包含该工作表的工作簿)连接而创建的。...需要在每次计算后清空缓存,因为用户可能会改变已使用的单元格区域,因此安全的做法是在每次计算时重新创建缓存。AfterCalculate是一个应用程序级事件,在完成计算和相关查询和刷新后触发。...使用Application对象的AfterCalculate事件 首先,我添加了一个名为AppEvents的类模块,代码如下: Private WithEvents App As Application
二、工作簿事件分类 工作簿事件的种类很多,但很大一部分事件很难用到,下面图表列出工作簿事件和触发条件。可以收藏备查,根据需要来使用。...三、常见工作簿事件 1、open事件 打开工作簿时,将触发此事件,此事件中可以写入一些只需执行一次得代码。...二、从另一个工作簿切换到本工作簿时,也会触发该事件。 (需要注意open事件和activate事件的区别。...由于open事件可能被用户跳过,所以系统设置之类的初始化代码建议方在工作簿activate事件中。)举简单示例: 当该工作簿被激活时,就可以触发事件的代码。...二、关闭工作簿时,在workbook的beforeclose事件之后触发。 一些恢复系统设置之类的代码通常会放在deactivate事件中。
创建新工作簿并保存为启用宏的工作簿。 3. 关闭该工作簿,然后在CustomUI Editor中打开该工作簿。 4....在CustomUI Editor中,单击“插入”并选择“Office 2007 Custom UI Part”。之所以选择这个选项,是使工作簿与Excel 2007及以后的版本兼容。...单击工具栏中的Validation按钮来检查是否有错误。 7. 保存并关闭文件。 8. 在Excel中打开该工作簿文件。 下图展示在功能区的“开始”选项卡出现了含两个内置控件的名为Fav的组。 ?...注意到,这是对特定文档进行功能区定制,即仅包含XML代码的工作簿显示定制的功能区,当关闭该工作簿时,自动移除功能区中的定制。...要在其他工作簿中显示定制的功能区,应将工作簿保存为加载宏(Excel加载宏(*.xlam)),并执行下列步骤在Excel启动时装载加载宏文件: 1.
,旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。...支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...一个工作簿中至少包含一个可见工作表。如果给定的工作表为默认工作表,则对其可见性设置无效。...,如果给改工作表设置为可见,那么遍历工作簿的所有工作表,将我们要设置的工作表找到,然后给它的状态值State设置为空字符串。...,如果存在就获取其TabSelected的状态,微软的文档没有说明这个属性的意义,我猜想是判断这个工作表是不是默认工作表。
工作簿事件顺序 操作工作簿时常用的事件产生顺序如下: 1、workbook_open事件:打开工作簿时产生该事件 2、workbook_activate事件:打开工作簿时产生该事件。...工作表事件顺序 工作表的事件不多,但操作工作表时也可能触发一些工作簿事件,下面会列出一些常用工作表事件的产生顺序 第一种情况:当修改单元格中的内容后,再改变活动单元格时事件的产生顺序如下: worksheet_change...,形式如下: Application.EnableEvents = False 代码 Application.EnableEvents = True 在change事件很常见,目的就是防止过程中的代码在修改单元格的值时第二次触发事件...在相应的工作表中,当用户更改了单元格的内容时,会第一次触发worksheet_change事件。 代码执行将单元格的值改为“内容已经更改”和弹窗。由于代码更改了单元格的内容。...所以正确使用方法,就是用户更改单元格触发worksheet_change事件时,在代码中把事件触发关闭。然后运行修改代码后,再恢复事件的触发。代码就正常的运行。
旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。...支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...简单来说,就是读取工作表的PageMargins指针,然后将pm内的值传递到opt指针,然后就能直接通过获取opt的值来获取工作表的页边距。...= nil { fmt.Println(err) } 先介绍一下这三个参数的含义: Date1904是一个用于WorkbookPrOption的选项,它表明在将工作簿中的序列日期时间转换为日期时...设置和获取工作簿中的 FilterPrivacy 与 CodeName 属性,以解除部分情况下向工作簿中嵌入 VBA 工程时的限制 // SetWorkbookPrOptions provides a
,旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。...支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...获取到的索引可以在设置工作簿默认工作表时,作为调用 SetActiveSheet() 函数的参数使用。...四、GetSheetMap() func (f *File) GetSheetMap() map[int]string 获取工作簿中以 ID 和名称构成的全部工作表、图表工作表和对话工作表映射表。...,然后将遍历工作簿中的所有工作表,将工作表对象sheet的ID为键,Name为值放入sheetMap中,最后返回sheetMap即可。
Workbook.FullName在VBA中是一个非常常用的属性,返回的是工作簿的全路径,首先查看一下帮助文件: 返回对象的名称(以字符串表示),包括其磁盘路径。String 型,只读。...再仔细一看,会发现我故意将一些字母大小写替换了,文件能正确打开,但FullName返回的字符串和原始字符串有差异了。...可以看到路径中故意修改的字符被保存在了FullName中,但是文件名被还原回了磁盘上正确的名称。...我个人有这样一个使用习惯,由于需要使用的VBA功能较多,我将一些功能分类编写了不同的宏文件,这些文件存放在同一个文件夹里,只设置加载一个加载宏。...如下图所示,修改了路径中的字母大小写,加载宏myVBA.xlam没有过滤掉: ?
,更快地跨越鸿沟,参与到开源的具体贡献与实践中。...支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...二、Close() func (f *File) Close() error 此API的作用是关闭工作簿并清理打开文档时可能产生的系统磁盘缓存。...三、NewSheet() func (f *File) NewSheet(sheet string) int 该API的作用是根据给定的工作表名称来创建新工作表,并返回工作表在工作簿中的索引。...请注意,在创建新的工作簿时,将包含名为 Sheet1 的默认工作表。
,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。...支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿...二、 SetDefinedName func (f *File) SetDefinedName(definedName *DefinedName) error 根据给定的名称和引用区域设置名称,默认范围是工作簿...此元素定义此工作簿的已定义名称的集合。 定义的名称是表示单元格、单元格区域、公式或常数值的描述性名称。 定义的名称可用于表示任何工作表上的范围。...对遍历得到的每一个DefinedName元素,我们命名为dn。 如果dn的LocalSheetID不为空,就根据工作表ID获取其工作表名称。
领取专属 10元无门槛券
手把手带您无忧上云