Excel VBA 实现Ribbon自定义功能区 2022.12.3修改

  • 目录
    • 自定义功能区的实现
      • 1.编写执行代码生成.xlam文件,拷贝到%APPDATA%\Microsoft\AddIns\
      • 2.编辑自定义功能区生成Excel.officeUI文件,拷贝到%LOCALAPPDATA%\Microsoft\office\
    • 实现可移植自定义功能区的过程

目录

最近用vba编辑Excel自定义功能区,试了很多办法,看了很多文章,过程都很复杂,实现起来难度也比较大。但功夫不负有心人,最终成功突围,也免去了用代码编辑自定义功能区排版布局。

自定义功能区的实现

效果图:

1.编写执行代码生成.xlam文件,拷贝到%APPDATA%\Microsoft\AddIns\

VBA代码比如:

Sub 删除空行()On Error Resume NextDim Rng As RangeSet Rng = Intersect(ActiveSheet.UsedRange, Selection, Selection.SpecialCells(xlCellTypeBlanks))Rng.EntireRow.Delete
End Sub

将以上vba代码另存为.xlam文件,并拷贝到目录%APPDATA%\Microsoft\AddIns\

2.编辑自定义功能区生成Excel.officeUI文件,拷贝到%LOCALAPPDATA%\Microsoft\office\

方法:
(1)通过Excel生成Excel.exportedUI文件;
(2)将Excel.exportedUI文件删除第一行<mso:cmd app=“Excel” dt=“1”/>,另存为Excel.officeUI文件;
(3)将Excel.officeUI拷贝到%LOCALAPPDATA%\Microsoft\office\Excel.officeUI;

(1)通过Excel生成Excel.exportedUI文件,具体步骤如下:
通过Excel添加到自定义功能区
在菜单里会显示如下结果:


导出自定义功能区为Excel.exportedUI文件。

(2)将Excel.exportedUI用记事本打开,删除第一行:<mso:cmd app=“Excel” dt=“1” />另存为Excel.officeUI。
(3)拷贝文件,将Excel.officeUI拷贝到%LOCALAPPDATA%\Microsoft\office\Excel.officeUI。

实现可移植自定义功能区的过程

1.制作AddIn.xlam文件,第一次安装时启动excel并加载宏设置为选中,效果如下图:

Private Sub Workbook_Open()On Error Resume NextDim oXL As Object, oAddin As ObjectAddInName = "MyTool.xlam"URL = Me.Path & "\"Set oXL = Application With oXLFor i = 1 To .AddIns.CountIf .AddIns(i).Name = AddInName And .AddIns(i).FullName <> URL & AddInName Then.Workbooks(AddInName).CloseFileCopy URL & AddInName, .AddIns(i).FullName.Workbooks.Open (.AddIns(i).FullName).AddIns(i).Installed = TrueEnd IfNextSet oAddin = .AddIns.Add(URL & AddInName, True)oAddin.Installed = True.QuitEnd WithSet oXL = Nothing
End Sub

2.使用bat指令批量处理,生成run.bat,实现功能包括:

运行AddIn.xlam
拷贝MyTool.xlam到%APPDATA%\Microsoft\AddIns\MyTool.xlam
拷贝Excel.officeUI到%LOCALAPPDATA%\Microsoft\office\Excel.officeUI

@echo off
::==========================
::启用管理员模式
setlocal EnableDelayedExpansion
color 3e
::title 添加服务配置
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
::==========================
::安装程序
echo.
echo 正在安装. . .
::—关闭word、excel—
set p1=excel.exe
set p2=winword.exe
tasklist|findstr /i %p1%&&taskkill /f /im %p1% >nul 2>nul
tasklist|findstr /i %p2%&&taskkill /f /im %p2% >nul 2>nul
::echo —安装—
set errorl=1
echo 1.正在设置加载项. . .
copy /Y MyTool.xlam %APPDATA%\Microsoft\AddIns\MyTool.xlam >nul 2>nul && echo Excel加载项成功导入!|| IF ERRORLEVEL 1 set errorl=0&echo Excel加载项未导入×
start /b/min/wait AddIn.xlam >nul 2>nul && echo Excel加载项已启用!|| echo Excel加载项未能启用×
::==========================
echo.
echo 2.正在导入officeUI文件. . .
copy /Y Excel.officeUI %LOCALAPPDATA%\Microsoft\office\Excel.officeUI >nul 2>nul && echo Excel.UI成功导入!|| IF ERRORLEVEL 1 set errorl=0&echo Excel.UI未导入×
::==========================
echo.
if %errorl%==1 echo 安装成功!
if %errorl%==0 echo 安装不成功,请联系发布者检查未安装项后再重新安装!
echo.
@pause
exit

可将以上文件压缩成自运行压缩包(run.bat、AddIn.xlam、MyTool.xlam、Excel.officeUI),解压包时运行run.bat,就可将自定义功能区内容移植到其他用户excel自定义功能区。

安装成功的效果图:

希望能给以上困扰的朋友们一些帮助!

Excel VBA 实现Ribbon自定义功能区相关推荐

  1. Excel VBA自定义功能区

    在 Excel 编写代码,离不开界面的导航.之前为了简单,经常将控件放置在工作表上.但这种方法显得不专业.Office 其实允许通过代码或者使用 XML 文件的方式来定义功能区.本篇介绍自定义功能区的 ...

  2. excel vba 使用mschart_VBA专题108:使用VBA操控Excel界面之在功能区中添加内置控件...

    学习Excel技术,关注微信公众号: excelperfect 本文重点讲解如何在功能区中添加不同类型的内置控件. 添加普通按钮和切换按钮 按下面的步骤来添加普通按钮和切换按钮(例如,拼写和删除线控件 ...

  3. Excel 2010 VBA 入门 140 在功能区添加按钮并运行VBA程序

    目录 题 码 回调(CallBack) IRibbonControl对象 题 如图所示,该表为员工档案.为了避免该表的数据被修改,该表已经被保护.如何在功能区添加一个按钮,当单击该按钮后可以将该表的数 ...

  4. excel自定义功能区图标_将您自己的图标添加到Excel自定义功能区选项卡

    excel自定义功能区图标 Are you building custom tabs for your workbooks yet? Last year, I wrote a couple of ar ...

  5. WPS 自定义功能区添加宏(VBA)设定的功能

    MicroOffice Excel可以在"自定义功能区"菜单中,可以直接添加"宏".但是WPS Excel的"自定义功能区"设置菜单不支持& ...

  6. Excel VBA自定义序列排序

    图1 待排序数据集 在图1中所示的数据集中,如果希望按单元格区域E2:E6所列序列进行排序,需要先使用AddCustomList方法为应用程序添加自定义序列,示例代码如下. Sub SortByLis ...

  7. Excel·VBA自定义函数筛选单元格区域重复值

    贴吧提问<哪位大神知道要怎么实现?>,Excel内置函数使用比较麻烦,VBA字典实现比较直观 自定义函数UNIQUE_IF筛选单元格区域中的值,可以选择返回其中的唯一值或重复值,并用分隔符 ...

  8. 来吧!带你玩转 Excel VBA

    来吧!带你玩转 Excel VBA(含CD光盘1张)(双色)(附带近500个VBA思考练习题,Exceltip.net出品) 罗刚君  杨嘉恺编著 ISBN 978-7-121-20627-6 201 ...

  9. 来吧 带你玩转 Excel VBA

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 来吧!带 ...

最新文章

  1. vue通过监听实现相同路径的视图重新加载
  2. MongoDB系列二
  3. 泰坦尼克数据集预测分析_探索性数据分析-泰坦尼克号数据集案例研究(第二部分)
  4. 工作项跟踪管理系统需求
  5. linux的系统移植——uboot常用命令
  6. python 商城_python 开源商城安装
  7. java之点击一次之后失效_JavaScript 事件绑定只能执行一次了,再次点击就变得无效 ,求助怎么回事...
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的学校教务查询系统
  9. Oracle Rownum 伪列详解
  10. matlab选择语句函数,Matlab基本语句和基本函数
  11. 14. 接口隔离模式之Facade模式(门面模式/外观模式)
  12. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
  13. HEVC 、H.264与AVS2 视频压缩
  14. 切边压力机行业调研报告 - 市场现状分析与发展前景预测
  15. ubuntu 20.04开启echo和daytime服务,亲测可用
  16. 苏宁易购账户莫名消失 个人信息泄露并非个例
  17. 我逛遍各大论坛,分享这份大厂招聘总结:涵盖Java岗位95%+真题
  18. LQ0270 手机尾数【水题】
  19. 数字逻辑实验|逻辑函数及其描述工具(Logisim)
  20. 面试又双叒叕被问到数据库三大范式,该怎么答才能让面试官认可呢

热门文章

  1. Android-事件分发机制(源码层面)
  2. 十进制转换为二进制、原码、反码、补码、移码
  3. HttpClient4.4.1模拟登录知乎
  4. golang的ping检测主机存活
  5. Vue之如何动态渲染.vue文件
  6. 未来教育安装后打不开
  7. 如何学习编程、一门编程语言怎么算入门、快速掌握一门编程语言
  8. Kotlin-Android世界的一股清流
  9. 基于pytorch的双模态数据载入
  10. vultr最多可以开几台服务器,Vultr服务器添加多个IP实现Vultr多线服务器的方法与教程...