Excel 实现Ribbon定制开发小程序定制开发小程序自定义功能区 2022.12.3修改
目录
最近用vba编辑Excel自定义功能区,定制开发小程序试了很多办法,定制开发小程序看了很多文章,过程都很复杂,实现起来难度也比较大。但功夫不负有心人,最终成功突围,也免去了用代码编辑自定义功能区排版布局。
自定义功能区的实现
效果图:
1.编写执行代码生成.xlam文件,拷贝到%APPDATA%\Microsoft\AddIns\
VBA代码比如:
Sub 删除空行() On Error Resume Next Dim Rng As Range Set Rng = Intersect(ActiveSheet.UsedRange, Selection, Selection.SpecialCells(xlCellTypeBlanks)) Rng.EntireRow.DeleteEnd Sub
- 1
- 2
- 3
- 4
- 5
- 6
将以上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 Next Dim oXL As Object, oAddin As Object AddInName = "MyTool.xlam" URL = Me.Path & "\" Set oXL = Application With oXL For i = 1 To .AddIns.Count If .AddIns(i).Name = AddInName And .AddIns(i).FullName <> URL & AddInName Then .Workbooks(AddInName).Close FileCopy URL & AddInName, .AddIns(i).FullName .Workbooks.Open (.AddIns(i).FullName) .AddIns(i).Installed = True End If Next Set oAddin = .AddIns.Add(URL & AddInName, True) oAddin.Installed = True .Quit End With Set oXL = NothingEnd Sub
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
2.使用b批量处理,生成run.bat,实现功能包括:
运行AddIn.xlam
拷贝MyTool.xlam到%APPDATA%\Microsoft\AddIns\MyTool.xlam
拷贝Excel.officeUI到%LOCALAPPDATA%\Microsoft\office\Excel.officeUI
@echo off::==========================::启用管理员模式setlocal EnableDelayedExpansioncolor 3e::title 添加服务配置PUSHD %~DP0 & cd /d "%~dp0"%1 %2mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto :eof:runas::==========================::安装程序echo.echo 正在安装. . .::—关闭word、excel—set p1=excel.exeset p2=winword.exetasklist|findstr /i %p1%&&taskkill /f /im %p1% >nul 2>nultasklist|findstr /i %p2%&&taskkill /f /im %p2% >nul 2>nul::echo —安装—set errorl=1echo 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.@pauseexit
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
可将以上文件压缩成自运行压缩包(run.bat、AddIn.xlam、MyTool.xlam、Excel.officeUI),解压包时运行run.bat,就可将自定义功能区内容移植到其他用户excel自定义功能区。
安装成功的效果图:
希望能给以上困扰的朋友们一些帮助!