Excel VBA 实现Ribbon自定义功能区

目录

最近用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自定义功能区。

安装成功的效果图:
在这里插入图片描述

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

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于Ribbon自定义负载均衡,你可以通过以下步骤进行操作: 1. 添加Ribbon依赖:在你的项目中添加Ribbon的依赖,例如使用Maven管理项目依赖的话,在`pom.xml`文件中添加如下依赖: ```xml <dependencies> ... <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> ... </dependencies> ``` 2. 创建一个自定义的负载均衡器:可以实现`IRule`接口来定制自己的负载均衡策略。例如,你可以创建一个名为`CustomRule`的类来实现自己的负载均衡算法,继承自`AbstractLoadBalancerRule`。 ```java import com.netflix.loadbalancer.AbstractLoadBalancerRule; import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.Server; public class CustomRule extends AbstractLoadBalancerRule { @Override public Server choose(Object key) { // 自定义负载均衡算法逻辑 // 返回一个Server对象作为选择结果 // 可以根据自己的需求进行算法实现 ... } } ``` 3. 配置自定义负载均衡器:在应用的配置文件中,指定使用自定义的负载均衡器。例如,在`application.properties`或`application.yml`文件中添加如下配置: ``` spring: cloud: loadbalancer: ribbon: rule: com.example.CustomRule ``` 4. 启用Ribbon负载均衡:确保在应用的启动类上添加`@EnableDiscoveryClient`注解,以启用Ribbon负载均衡功能。 ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 通过以上步骤,你就可以自定义Ribbon的负载均衡策略了。注意,这里只是简单的介绍了一种实现方式,你可以根据自己的需求进行更详细的定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值