Excel VBA 实现Ribbon自定义功能区
Excel VBA 实现Ribbon自定义功能区最近用vba编辑Excel自定义功能区,试了很多办法,看了很多文章,过程都很复杂,实现起来难度也比较大。但功夫不负有心人,最终成功突围,也免去了用代码编辑自定义功能区排版布局。自定义功能区的实现1.编写执行代码,比如如下:Sub 删除空行()On Error Resume NextDim Rng As RangeSet Rng = Intersect
Excel VBA 实现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.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 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 = 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自定义功能区。
安装成功的效果图:
希望能给以上困扰的朋友们一些帮助!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)