VBA学习
文章平均质量分 60
xwLink1996
机械设计工程师,兼职开发软件,宏程序,网页,有需求请加微信xwlink1996
展开
-
VBA学习(21):遍历文件夹(和子文件夹)中的文件
File System Object(FSO)是一个单独的操作库,我们可以在VBA代码中使用它。为了确保这些代码可以处理任意数量的子文件夹,宏实际上会调用自身(一种称为递归的技术)。很多时候,我们都想要遍历文件夹中的每个文件,例如在工作表中列出所有文件名、对每个文件进行修改。下面的示例代码将文件名打印到立即窗口,很容易修改这些代码以更适合你的具体情况。后期绑定不需要任何特定操作来启用FSO库,确保在VBA代码中需要时打开库。Dir函数是一个内置的VBA函数,可用于可使用VBA的任何应用程序。原创 2024-07-16 14:53:02 · 491 阅读 · 0 评论 -
VBA学习(20):一批简单的Excel VBA编程问题解答
7.单元格A10包含公式=SUM($A$1:$A$9),如果将此公式复制到单元格F20,它将更改为什么?4.假定单元格区域R指向单元格A1:D6,则R.Cells(6)指向哪个单元格?当一个单元格中的公式引用另一个单元格时,该单元格直接或间接引用第一个单元格。8.公式包含单元格引用A$10,将此公式复制到另一个单元格会怎样?20.调用哪种方法来在单元格区域内查找要指定字符串的所有实例?3.你的程序在列B位置插入一个新列,原来的列B会怎样?9.一个工作表中的公式如何引用另一个工作表中的单元格?原创 2024-07-16 13:33:39 · 484 阅读 · 0 评论 -
VBA学习(19):使用文本文件隐藏登录敏感信息
代码先查找桌面上指定的文本文件,使用Environ函数提取默认的路径,可将将文本文件所在文件夹追加到该路径后面以创建完整的路径。thespreadsheetguru.com展示了一种简单的方法,能够在运行时将用户名和密码带入VBA,而不会在VBA代码或Excel工作表中暴露这些敏感信息。经常看到很多人会将他们的登录名/密码直接存储在VBA代码中甚至工作表中,这是很不安全的一种处理方式。首先,将自已的用户名和密码保存在个人计算机上,可以将它们保存到文本文件中,如下图1所示。原创 2024-07-16 13:28:35 · 340 阅读 · 0 评论 -
VBA学习(18):VBA制作任意工作表均可使用的聚光灯
但需要说明的是,一旦使用VBA代码,Excel将会丧失“后悔”功能,也就是说Ctrl+Z的撤销功能会失去效果了。在需要制作聚光的工作簿,按组合键,打开VBE编辑器。如果你只是需要对某个工作表制作聚光灯,可以换用工作表事件,将以上代码修改为如下,并复制粘贴到相关工作表模块代码窗口即可。除此之外,该代码还会取消单元格原有设置的填充色,不过不会取消【条件格式】以及【表】功能设置的单元格填充色。当然,代码还有很多优化空间,比如,调整聚光灯的范围,仅限数据区域,参考代码如下▼。原创 2024-06-22 08:29:18 · 404 阅读 · 0 评论 -
VBA学习(17):使用条件格式制作Excel聚光灯
公式由两部分构成,一部分是cell("row")=row(),另一部分是cell("col")=column(),两个部分做OR运算,意思是只要满足其中一个条件就符合计算规则。代码使用了工作表的SelectionChange事件,意思是当代码所在工作表的活动单元格发生改变时,就执行一次公式重弄算,以此达到对条件格式的CELL函数强制重算刷新的作用。按组合键打开VBE编辑器,在右侧工程资源管理器窗格,双击需要设置聚光灯的工作表对象,本例为Sheet1,将以下代码粘贴到该工作表的代码窗口中。原创 2024-06-22 08:26:09 · 786 阅读 · 0 评论 -
VBA学习(16):工作表事件示例:输入数据后锁定单元格
这样,右击想要重新输入数据的单元格,会弹出一个消息框,询问你是否要重置这个单元格,如果点击“是”,则会清空该单元格并供输入新数据。可以使用右击单元格的方式,来重置想要重新输入数据的单元格。在工作表单元格中输入数据后,该单元格就被锁定,不能再编辑。这里,假设锁定工作表的密码为“123”。原创 2024-06-22 08:20:37 · 383 阅读 · 0 评论 -
VBA学习(15):工作表加密保护后却把密码忘记了?
最后关闭所有对话框,将文件后缀名从rar修改回xlsx,以Excel的名义打开它,便可以发现相关工作表的保护设置已被全部撤除。依次双击打开xl→worksheets→需要解除保护密码的工作表名称,本例为sheet1,打开的方式选择记事本。首先,将Excel工作簿的后缀修改为rar,比如演示文件.xlsx,修改为演示文件.rar。一种是傻瓜模式的VBA,复制运行以下代码,即可抹除当前工作簿所有工作表的保护加密。另外一种步骤稍多,适合惧怕VBA,更喜欢动手动脚的朋友们。双击该文件,打开方式选择WinRAR。原创 2024-06-22 08:17:58 · 418 阅读 · 1 评论 -
VBA学习(14):给1000个文件重命名
第14至第27行代码遍历数据源数组,把第1列的旧文件名重命名为第2列的新文件名。第20至第25行代码,采用试错法,将处理结果信息写入结果数组。第7至第8行代码调用getStrPath函数过程,打开【文件浏览】对话框,允许用户选择的目标文件夹,并获取相关文件的路径。首先,使用以下代码,将该文件夹内的文件名批量提取到当前活动工作表的A列。最后,复制运行以下代码即可将A列旧的文件名修改为新的文件名。第9至第10行代码将A:B列的数据源数据存入数组aData。第28至第30行代码将结果数组写回当前工作表的C列。原创 2024-06-20 14:49:25 · 339 阅读 · 0 评论 -
VBA学习(13):获取多层文件夹内文件名并建立超链接
代码使用了FileSystemObject对象和递归的方法实现文件夹和文件的遍历功能。分别将文件夹名称和文件名提取在表格的A/B列,并对文件名创建了超链接。原创 2024-06-20 13:20:49 · 400 阅读 · 0 评论 -
VBA学习(12):制作动态模糊匹配的下拉菜单
选中目标工作表,在【开发工具】→【插入】→【ActiveX控件】,先后插入一个文本框和一个列表框。控件的大小和存放的位置都随意,反正这事你说了也不算,后面代码会自己做调整。需要注意的是,如果你不会调整VBA代码,那么此处文本框的名字必须为TextBox1,列表框的名字必须为ListBox1——正常而言,这俩名字也都是系统默认的。当在文本框中输入数据时,列表框的数据会随之动态更新。保持目标工作表选中状态不变,按快捷键打开VBE编辑器,将以下代码粘贴到当前工作表的代码窗口。原创 2024-06-20 13:17:32 · 516 阅读 · 0 评论 -
VBA学习(11):用Excel控制电脑关机和重启
第4行代码使用CreateObject("Wscript.Shell")类库的Exec方法执行DOS语句。这个类库相比Shell函数的一大优势是:它不但可以执行DOS命令,还可以返回DOS命令的执行进度和结果。今天给大家简单聊一下如何使用Excel VBA 操作DOS,聊几个比较典型的案例,比如关机、关指定程序、获取多层文件夹下文件名等。正常来说,用以下语句也可以关闭Excel,但有时关的并不彻底,Excel程序依然存在于进程中。的方法,不过代码比较繁琐,效率也不是很高。相比之下,DOS方法就简洁太多了。原创 2024-06-19 09:15:00 · 502 阅读 · 0 评论 -
VBA学习(10):按名称批量将图片插入到表格中
代码继续运行,会先删除旧图片,再插入新图片,最后发出一个消息框,用户一共成功插入了多少张图片,失败了多少张;5>代码采用非引用的方式插入图片,该方式会将图片作为资源打包到excel文件中,即便数据源的图片已被删除,表格中的图片也依然存在,这样有利于将工作簿发送他人,不利是Excel体积过大,使用效率就会变差。当然,您也可以把代码稍微修改,设置固定的图片行高和列宽,并由图片的行高和列宽决定单元格的大小。然后选择图片名称存放的单元格区域,可以选择整列、多列、整行或多行,比如示例动画中的B:D列,2:2行等。原创 2024-06-18 13:59:47 · 696 阅读 · 0 评论 -
VBA学习(9):按指定名单一键删除工作表
也就是删除单个工作表、删除全部工作表和删除指定名单内的工作表。第29至第44行代码遍历名单数据,第32行代码判断字典中是否存在需要删除的表名,如果存在,则删除,否则使用变量strErr记录未能删除的名单。打个响指,需要说明两点,一个是系统要求工作簿必须存在至少一张可见工作表,因此我们并不能将全部工作表都解雇,上述代码选择了保留当前工作表。第5至第8行代码判断工作簿是否有保护,工作簿结构保护状态下,工作表是不被允许开除的,违法行为知道吧?第19至第23行代码将当前工作簿现有工作表的名字存入字典。原创 2024-06-18 14:30:00 · 676 阅读 · 0 评论 -
VBA学习(8):按指定模板批量创建工作表
第20至第24行代码采用试错的方式,判断当前工作簿是否有名为"模板"的工作表,如无,则弹窗提醒用户,并退出程序。首先,当前工作簿内需要存在一张名为"模板"的工作表;该工作表的格式和数据可以根据个人需要自定义。第35行代码删除可能重名的旧工作表。第37行代码复制模板表,并放置在当前所有工作表之后。今天给大家分享一下如何按指定名单和模板批量创建工作表。然后在另外一张工作表提供需要创建新工作表的名单。第32至第47行代码遍历新建工作表名单。最后,复制运行以下代码即可。原创 2024-06-18 14:15:00 · 405 阅读 · 0 评论 -
VBA学习(7):按指定名单批量创建工作表
第11行代码使用Application.InputBox语句使用户选择工作表名称的来源单元格区域。第34至第40行代码判断错误号,如果存在错误,说明工作表名称不符合Excel要求,包含斜杠等特殊符号,则删除新建的工作表,并记录错误名称。第6行至第9行代码判断工作簿是否有保护,如果工作簿有保护是无法创建工作表的,弹窗提示用户并退出程序。第21行代码记录当前表,以便程序运行结束后,Excel界面回到当前位置。第32至第33行代码新建工作表并命名。第50至第56行代码弹窗告知用户工作表创建完成的信息。原创 2024-06-18 09:47:08 · 264 阅读 · 0 评论 -
VBA学习(6): 调整工作表中所有图表尺寸并使其大小相同
有时候,我们想要将工作表中的所有图表进行缩放操作,且要求这些图表调整后的尺寸大小相同。如果使用手动拖放调整,看似大小相同,实际可能有差异。当然,也可以选取所有的图表后,在工作表选项卡中输入其宽度和高度值,调整它们并使其大小相同。可以使用一小段VBA代码来帮助我们完成这项任务。原创 2024-06-18 09:03:45 · 163 阅读 · 0 评论 -
VBA学习(5):批量生成小饼图
批量生成小饼图有两种常用的方法,一种是用插件,比如Sparklines;另外一种是自己动手丰衣足食,摊手,也就写点VBA小代码得啦。复制运行以下VBA代码,选择占比值所在的单元格区域,即可批量生成小饼图。技术交流,软件开发,欢迎加微信xwlink1996。之前给大家分享了如何用一个函数制作各种常见图表👇。占比的饼图是怎么批量生成的?之后有朋友问,下图中表示。原创 2024-06-18 08:42:10 · 446 阅读 · 0 评论 -
VBA学习(4):一键生成Sheet表目录
今天给大家分享一段VBA小代码,作用是批量获取当前工作簿所有工作表的名称,并创建超链接,以方便工作表的查阅与管理。第8至第13行代码采用索引法遍历当前工作簿表的集合。Sheets.Count语句返回当前工作簿工作表的数量。第3至第6行代码清空当前表A列内容,并设置文本格式,避免当工作表名称是文本型/类日期星数值时名称变形。技术交流,软件开发,欢迎加微信xwlink1996。各参数说明如下图所示。原创 2024-06-18 08:21:59 · 439 阅读 · 0 评论 -
VBA学习(3):如何运行VBA代码
打开【指定宏】对话框,选择目标宏名,例如本例的CollectData,最后单击【确定】按钮。▎2,打开目标Excel工作簿,右键单击任意工作表名称,执行右键菜单的【查看代码】命令,或者按组合键,打开VBE窗口。▎3,在VBE窗口界面,右键单击左侧任意工作表名称,例如下图所示的Sheet1,在弹出的选项菜单中,依次单击【插入】→【模块】▎4,单击选中新建的模块,在右侧代码窗口粘贴代码,然后关闭该窗口。▎7,OK,单击该矩形形状,就可以运行小代码了。运行代码有多种方式,如果你只需要运行一次,原创 2024-06-18 08:56:11 · 371 阅读 · 0 评论 -
VBA学习(2):Excel VBA初学者编写第一个宏
在弹出的“指定宏”对话框中选择刚才录制的宏“SetFontandColor”,单击“确定”按钮,如下图4所示。在弹出的“录制宏”对话框中,在“宏名”文本框中输入录制的宏的名字,本示例将宏命名为“SetFontandColor”,如下图2所示。对于初学者来说,你可能不了解VBA,这里,我们会使用宏录制器来记录我们的操作,然后看看记录的指令(也就是代码),以了解VBA是什么。回到Excel工作表界面,单击功能区“开始”选项卡“字体”组中的“加粗”、“倾斜”按钮,然后单击“字体颜色”下拉按钮设置为红色。原创 2024-06-17 15:38:44 · 1053 阅读 · 0 评论 -
VBA学习(1):编写Excel VBA程序的10个技巧
如果你想编写自己的代码来反转某些文本、基于分隔符拆分某些内容、找到2个单元格区域的交集或者在10秒钟后执行某些操作,那么可能是在编写代码之前就应该做的,因为有一个解决它的方法。建议:尽可能使用Excel内置的功能,Excel具有许多的内置功能可以解决各种日常问题(条件格式、数据透视表、公式、数据验证、表单控件等),仅当你觉得没有一种简单的方法可以单独使用Excel解决问题时,才使用VBA。一本好的参考书中包含有很多实用的技巧和信息,可以在编写程序时随时参考,也可以在平时经常翻阅,总是可以从中学到新的东西。原创 2024-06-13 10:32:47 · 409 阅读 · 0 评论