ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5665|回复: 30

发布一个免费的加载宏工具(开放部分源码)-ExcelDIY

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-12-19 00:04 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 leolee82 于 2022-1-26 21:24 编辑

下载地址:https://gitee.com/leolee82/ExcelDIY
大家如果喜欢开放源码的可以参考10年前的版本,那时是在VBA里做的,但功能仅限于生成工具栏和右键菜单。链接如下:http://www.excelpx.com/forum.php ... d=157469&extra=

详细说明见使用说明.docx

除ExcelDIY.dll外,集成的加载宏工具都没有加密(加密也没用,哈哈),没有使用说明,实在没时间写,基本上看一眼或试一下就知道是啥功能了,也可查看源码。为操作方便,常用的功能(右键菜单)都是基于当前选择区域进行操作。


ExcelDIY主要是为经常用或初学VBA的朋友提供方便,方便管理自己常用的VBA程序,为自已的程序增加菜单、快捷键、UNDO/REDO功能、读写ini文件、进度条等常功能。同时,也提供了大量常用或不常用的函数供VBA调用。用不到的加载宏都可以删除,以免看着那么多的没用功能心烦

介绍
       本程序是一个用于自定义Excel工具栏、菜单及快捷键的免费DIY管理工具(不需要注册,随便用),主要用于生成自定义工具栏菜单和添加右键菜单,方便调用XLA文件中的VBA程序或外部EXE程序。除设置菜单无法修改外,内置快捷键和其他菜单均可删除或修改,让初学者也可以随心所欲打造自己的宏工具集。旨在提高工作效率,以最少的操作、最快的速度、最简单的方式调用自己常用的程序。
       本程序由VB6开发,支持32位Excel2007及以上的版本和WPS2019(需安装VBA组件),支持Windows Vista及以上的操作系统(XP应该也是支持的,没测试过)。如果需要支持Excel2003,可通过[文件]->[Excel文件格式批量转换]自行转换加载宏文件(包括MenuData文件)。由于没有大量的业余时间,且32位Excel完全满足作者工作需求,因此无64位Excel的支持计划。数据量大到32位Excel无法支持的话,建议上数据库或专业软件。
       十多年来作者在工作中一直在使用和优化改进,ExcelDIY.dll中的核心功能已稳定运行多年。由于行业问题,作者仅对自己一些常用的加载宏(右键菜单和已设置快捷键的加载宏)不断进行改进和优化。
       由于内部用了SetWindowsHookEx函数,可能被杀毒软件误认为病毒。
      
       如果本工具对您有所帮助,您可以在能力范围内,通过点击下载页面下方的捐赠按钮对作者表示支持。无法开通捐赠功能,算了。用起来还可以的话,点页面右上的星星支持下吧

主要特色
  • 通过编辑菜单数据文件MenuData(excel文件去掉了扩展名)来定义适合自己的工具栏和右键菜单。其中各工作表的内容为:

  • 1)ToolbarMenu表:工具栏菜单数据,由于不方便访问(至少点3下鼠标),一些不常用的功能或已设置快捷键的功能建议放这里;
  • 2)PopupMenu表:工作表右键菜单数据,为避免与其他插件产生冲突,加快响应速度,采用独立的右键菜单,不集成在Excel内置菜单中。可按[Ctrl+右键][Shift+右键]或[双击CapsLock]弹出右键菜单,也可以在设置中修改按键;

  • 按F6弹出[最近的操作],方便调用常用的功能:

  • 1)连续按两次F6执行列表中的第一项,也就是最近一次使用的功能;
  • 2)按序号1-9或字母快捷键A-Z执行相应的功能;
  • 3)按空格可在列表中所有项中循环选择;
  • 4)可在设置中修改默认快捷键。

  • 按F7弹出[最近的访问],即最近访问的单元格和工作表,操作与[最近的操作]类似:

  • 1)连续按两次F7跳转到上一个单元格;
  • 2)按序号1-9或字母快捷键A-Z访问相应的单元格;
  • 3)按Shift+序号1-9或字母快捷键A-Z访问相应的工作表;
  • 5)可在设置中修改默认快捷键。

  • 使自己的VBA代码支持撤销(UNDO)和恢复(REDO)功能,并在[最近的操作]窗口中访问。多次调用同一VBA程序可多次撤销(UNDO)和恢复(REDO),不破坏Excel内置的撤销(UNDO)和恢复(REDO)。仅支持对单元格内容和格式的修改,其他更复杂的操作可自己写函数并注册到撤销(UNDO)和恢复(REDO)功能;
  • 自定义菜单项的快捷键,更适合高强度使用Excel的人:

  • 1)快捷键支持Ctrl、Shift、Alt,并且可覆盖Excel中的快捷键;
  • 2)独创的[连续快捷键]功能,目前最多连三次。用于设置近似功能的快捷键,例如复制选区单元格总和分为复制公式相加、复制数值连加和复制结果3个近似功能,即可设置快捷键为Ctrl+Shift+C、Ctrl+Shift+C+C、Ctrl+Shift+C+C+C。

  • 提供了大量VBA开发中的最常用的功能函数,在VBA中使用一两行代码即可使用如下功能:

  • 1)读/写变量、数组或控件状态到ini文件(GetSettingFromIni和SaveSetting2Ini系列函数);
  • 2)读/写窗体所有相同类型控件状态到ini文件(GetControlsSettingFromIni和SaveControlsSetting2Ini函数);
  • 3)通用的进度条窗体(PrepareProgressBar函数);
  • 4)使VBA中的List控件支持鼠标滚轮(clsEnableMouseWheel类);
  • 5)使VBA窗体可调整大小(UserFormSizeable函数);
  • 6)使控件大小和间距随窗体大小变化(DockControlVBA);

  • Excel启动时可运行多个指定功能;
  • 其他常用或不常用函数,如字符串、数组、文件、窗口、Excel、邮件操作等函数。也有些较复杂的功能函数,如批量发邮件相关的、不同格式的多个工作薄取数。详见F.cls。
  • WPS支持:运行WPS支持.reg。注意WPS只对ASAP_Utilities的32位版本(dll版本)支持的好。

  • 1)运行WPS支持.reg;
  • 2)安装WPS VBA模块;
  • 3)注意WPS只对ASAP_Utilities的32位版本(dll版本)支持的好。


安装教程
右键以管理员身份运行install.bat,注册成功后打开Excel即可。如注册失败,可将install.bat中的REM去掉(注册msaddndr.dll),重新运行。

"设置"菜单说明
  • "设置"菜单是程序内置的,不可编辑;
  • 设计模式:进入设计模式后,会自动打开"MenuData"文件供编辑,同时此菜单项自动变成"退出设计模式"。在设计模式中,执行菜单项会弹出对话框提示: 1)打开xla/exe文件所在目录; 2)跳转到菜单项所在行; 3)运行相应的xla/exe;
  • 退出设计模式(设计模式时):自动保存并关闭"MenuData"文件,更新菜单;
  • 程序设置:

  • 1)设置“最近的操作”和“最近的访问”的快捷键;
  • 2)设置“最近的操作”列表项的最大数量;
  • 3)设置“最近的访问”列表项的最大数量;
  • 4)可撤销(UnDo)的最大次数的;
  • 5)正在运行的XLA最大数目,通过本程序运行的加载宏的最大数量,超过这个数则关闭最先打开的加载宏,防止因打开太多导致Excel响应过慢;
  • 6)是否添加"最近的操作"菜单到右键菜单;
  • 7)启用最近的访问功能,以及列表项的最大数量;
  • 8)是否添加"最近的访问"菜单到右键菜单

  • 管理已打开的VBA程序:用于保存/关闭已打开的XLA加载宏;
  • 打开程序目录:打开程序所在的目录;
  • 创建菜单目录(设计模式时):在dll程序目录下生成相应的菜单结构目录,并自动编号,编号格式为"##-菜单标题",这样更方便管理各种小程序。这个功能很少用,一般都是根据目录中的文件创建菜单;
  • 联系作者:欢迎交流和提交bug;
  • 关于。没啥用。


其他说明:
  • 调用外部XLA文件中的函数或过程,并可指定函数参数;函数返回值不为0则设置菜单项状态为Checked;
  • 通过MenuData中的SilenceAction参数,控制在运行函数或过程前是否设置Excel的以下属性以提高运行速度。对于无模式窗体要特别注意,因为无模式窗体加载完过程立即结束,这个要在自己的程序中控制:
    DisplayAlerts = False
    EnableEvents = False
    ScreenUpdating = False
  • 指定菜单项图标。对于office自有图标可指定faceid;对于自定义图标,可把图标的图形文件(如"图标.jpg")放在icon文件夹下,然后在MenuData相应菜单项的faceid中填写"图标.jpg"即可,如果需要透明背景的图标,则需在icon文件夹中增加一个"图标mask.jpg"文件(全黑图片);
  • 鼠标指向菜单项,默认提示为:说明+[函数名];
  • 支持调用国外著名插件ASAP_Utilities中的功能,详见MenuData。ASAP Utilities目录下的List of all utilities and their IDs.TXT文件列出了所有功能的ID,将此ID做为ASAPRunProc的参数即可;
  • 集成了徙然客老师xla classic 2.0 深圳纪念版的部分功能(除保留了John Walkenbach的一些加载宏供学习外,国内的大神的那些都删除了),改进了本人常用的功能,同时增加了一些自己写的常用程序。







补充内容 (2022-2-12 13:06):
最近才发现gitee与github不一样,下载居然还需要注册。同时,由于很多人反映安装问题,制作了安装文件。以后只在百度网盘更新:
链接:https://pan.baidu.com/s/1USpadblcG6-RuvTeoMnx5Q
提取码:dzq5

补充内容 (2022-2-16 21:37):
修正打开受保护视图文件时延迟加载的bug
增加SQL函数
增加Sort系列函数,调用C++STL中的排序函数,QSort系列暂时不删除
Callback换成自己写的
链接:https://pan.baidu.com/s/1ARKlR81TowwjosDvkAzUZg
提取码:6ycd

补充内容 (2022-2-16 21:44):
VBA窗体支持鼠标滚轮功升级,参考VBA UserForm MouseScroll_DEMO,并修正了非模态对话框不能用的BUG
增加鼠标悬停激活VBA窗口功能,更加方便日常操作。默认开启,可从设置中关闭。

补充内容 (2023-4-4 20:19):
将菜单数据以二进制形式存储到MenuData文件夹中,提高了读取速度N倍
连续快捷键的功能取消了最多三次的限制
部分函数名称有改动
增加了一些VBA插件
https://pan.baidu.com/s/1KeB5zSLX6xGaaWoGoClP8A?pwd=4axg

补充内容 (2023-4-6 18:13):
修正了快捷键不小心新搞出来的bug
增加了ESC关闭VBA创建的窗体的功能
替换DLL文件重新注册即可,位于19楼

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-12-19 08:41 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-12-19 11:15 | 显示全部楼层

都是基础性和功能性的函数和类,由于平时很忙,说明写的也比较简单。
附带的那些常用加载宏工具,使用起来也很简单。不喜欢的话也可删除换成自己的,也可以自己修改。

由于是完全免费的,且加载宏都是开放源码的,所以不计划写各种工具的使用说明。等我失业了可以考虑专职搞这些,哈哈。希望可以理解。不过ExcelDIY.DLL和我常用工具的bug肯定会及时修正,也会根据自己工作需要增加新功能。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-12-19 14:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

ExcelDIY.dll中除了F6、F7能显示窗口,其他基本都是常用的及功能性的函数或类。至于附带的加载宏工具,实在是没时间去弄使用说明,随便录了个自已做的选区移动工具,支持方向键作为快捷键的。有些John Walkenbach的工具我从来没用过,可能要改下代码才能用的,这些可以拿来学习。不过ExcelDIY.dll和自己常用工具的bug会及时修正,或根据自己工作需要增加新功能。


选区移动工具

选区移动工具




TA的精华主题

TA的得分主题

发表于 2021-12-20 10:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-12-20 16:01 | 显示全部楼层
Undo/Redo功能:恢复和撤销单元格内容修改
如果单元格区域是明确的,只需要在修改内容前调用即可CreateObject("ExDIY.F").AddUndoItem(描述, 单元格区域)

UNDO功能

UNDO功能



Undo/Redo功能:恢复和撤销单元格属性修改
Call CreateObject("ExDIY.F").AddUndoItem("标记公式引用单元格为红色")
For i = 0 To ListBoxCells.ListCount - 1
    RangeAddress = ListBoxCells.List(i)
    Call CreateObject("ExDIY.F").SaveUndoRange(Range(RangeAddress), "Interior.Color", False)
    Call CreateObject("ExDIY.F").SaveUndoRange(Range(RangeAddress), "Interior.Pattern", False)
    Range(RangeAddress).Interior.ColorIndex = 3  'red
Next


UNDO功能

UNDO功能

TA的精华主题

TA的得分主题

发表于 2022-1-18 10:18 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-1-19 10:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lilo198251 发表于 2022-1-18 10:18
版主,这是什么原因

是不是没安装注册EXCELDIY.DLL?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-2-12 13:00 | 显示全部楼层


由于很多人反映安装问题,制作了安装文件

TA的精华主题

TA的得分主题

发表于 2023-3-12 23:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
excelpx上的代码下载不了哦
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 04:55 , Processed in 0.038541 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表