wkdxz 发表于 2022-7-7 11:04

[VBA] 为多个工作表的工作簿制作一个悬浮按钮(自动显示/隐藏)

最近工作时遇到个问题,需要对excel的多个分表进行整理,整理的数据结构都是相同的,只是内容有差异。如果为每个工作表添加一个按钮,执行起来会挺麻烦。

可选方式有两个:
1、为宏添加快捷键,使用快捷键来处理当前工作表。
2、制作一个悬浮按钮,打开工作簿时就显示,切换工作表时也一直显示,当前工作表不处于激活状态就隐藏。

我选了第二种方式,直观,不用去记忆快捷键。此处只分享按钮显示隐藏的思路,代码不高深,一看就懂。整理的代码我是使用python的xlwings库来编写的,就不发出来了,反正别人也不适用。

VBA工程密码:52pojie
压缩密码:52pojie

有兴趣的可以使用我另一个帖子 使用VBA破.解 vba工程密码 的工具尝试破.解下,由于Excel版本问题,不一定都能破解{:1_886:}。

测试文件:

截图展示:

zn1996 发表于 2022-7-7 17:06

zn1996 发表于 2022-7-7 14:10
不如使用CustomUIEditor 添加一个选项卡按钮吧,集成在xlsm文件里的。

软件打开后File>>Open>>选择一个xlsm格式文件,使用Insert>>Office 2007 Custom UI Part,然后把如下代码添加进去就行,最后onAction 为实际调用的过程名称,然后把VB代码加到VBA任意模块里
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">
      <tabs>
      <tab id="MyTab1" label="照片信息提取工具">

      <group id="kyfbg" label="照片信息提取">
                <button id="选择" label="选择文件夹" imageMso="ImportExcel" size="large" supertip="选择文件夹,将其中所有照片提取至表格"/>
                <button id="生成" label="生成JSON" imageMso="FilePrintQuick" size="large" supertip="根据新内容,重新生成JSON信息"/>
                <button id="清空" label="清空列表" imageMso="InkDeleteAllInk" size="large" supertip="清空数据,并重置标题"/>
      </group>
      </tab>
    </tabs>
</ribbon>
</customUI>

Sub 选择文件(control As IRibbonControl)
    你的具体代码或者调用函数或过程
End Sub

wkdxz 发表于 2022-7-7 11:09

   

我担心有人点菜单弹出错误,所以加了个判断,但是在写代码的时候没测试,所以类型搞错了。按第二张图小改一下就OK。

bwuaich 发表于 2022-7-7 12:00

wkdxz 发表于 2022-7-7 11:09
我担心有人点菜单弹出错误,所以加了个判断,但是在写代码的时候没测试,所以类型搞错了。按第二张 ...

哈哈; let me try; thank you for sharing;

seawaycao 发表于 2022-7-7 12:04

谢谢分享,试试怎么样。

zn1996 发表于 2022-7-7 14:10

不如使用CustomUIEditor 添加一个选项卡按钮吧,集成在xlsm文件里的。https://s1.ax1x.com/2022/07/07/jwMDBV.jpg

wkdxz 发表于 2022-7-7 14:41

zn1996 发表于 2022-7-7 14:10
不如使用CustomUIEditor 添加一个选项卡按钮吧,集成在xlsm文件里的。

推荐的软件确实不错,不过我还不太会用,先谢谢了

dongse 发表于 2022-7-7 15:04

ftogtong 发表于 2022-7-7 16:50

最羡慕会用vba办公自动化的大神

Louis_cllc 发表于 2022-7-7 17:16

感谢分享。
页: [1] 2 3
查看完整版本: [VBA] 为多个工作表的工作簿制作一个悬浮按钮(自动显示/隐藏)