ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] excel vba读取文本文档内的代码段,并执行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-29 13:35 | 显示全部楼层 |阅读模式
       如题,求助一下各位。我目前的情况是,有批量的.xlsm文档,是由同一个模板复制而来(内部代码段相同,表格初始内容有区别),用于处理并记录不同规格产品的数据;后期发现部分代码需要更新逻辑修改代码时,要在每个表格内逐一进行修改,非常繁琐。所以,我目前的一个想法就是,将通用的代码段外置,每个.xlsm文档用类似于调用子程序的方式调用代码段,来执行。这样维护时,只需要对外置的代码段更新一次就行。

       请教一下各位高手,我上面的这种想法,在VBA中有较为方便的实现手段吗,或者同样的能达成批量的vba代码维护的功能方法。感激不尽!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-29 14:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
现我现在只能实现一些外置字符串、常量的外置读取,但是读取代码段到vba中,然后还能顺序执行的,目前还没找到办法

TA的精华主题

TA的得分主题

发表于 2023-6-29 14:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
使用VBA在VBE中插入一个模块,在这个模块中插入一个宏,文本文件的内容作为这个宏的代码,然后执行这个宏。

TA的精华主题

TA的得分主题

发表于 2023-6-29 14:33 | 显示全部楼层
我的经验是:把通用代码存在一个xlam文件中,使用时调用这些模块就行了。这样,只要改这个xlam文件中的代码就行了。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-29 14:37 | 显示全部楼层
边缘码农 发表于 2023-6-29 14:21
使用VBA在VBE中插入一个模块,在这个模块中插入一个宏,文本文件的内容作为这个宏的代码,然后执行这个宏。

前面几步都行,就是具体到 以文本文件内容做宏代码时,不知道怎么处理

TA的精华主题

TA的得分主题

发表于 2023-6-29 14:41 | 显示全部楼层
本帖最后由 Yalishanda30 于 2023-6-29 14:50 编辑
excel小白白2 发表于 2023-6-29 14:37
前面几步都行,就是具体到 以文本文件内容做宏代码时,不知道怎么处理

可以考虑VBS脚本,Excel调用脚本,Excel本身可以没有代码
20230629_144909.gif

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-29 14:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Yalishanda30 发表于 2023-6-29 14:41
可以考虑VBS脚本,Excel调用脚本,Excel本身可以没有代码

嗯嗯,对的,就是想用类似脚本的东西,解决通用代码维护啥的,我去找找看这类资讯

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-29 14:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2023-6-29 14:33
我的经验是:把通用代码存在一个xlam文件中,使用时调用这些模块就行了。这样,只要改这个xlam文件中的代码 ...

嗯嗯,谢谢啦, xlam我还从来没接触过,我去找找相关的帖子

TA的精华主题

TA的得分主题

发表于 2023-6-29 14:56 | 显示全部楼层
Sub test()
    '------------------------------
    '测试:插入模块,将文本文件中的完整的宏代码写入模块中,并执行。
    '------------------------------
    '定义变量
    Dim TxtFile As String '文本文件名称
    Application.DisplayAlerts = False
    TxtFile = ThisWorkbook.Path & "\code.txt" '取得保存代码的文件文件
    ' 测试是否存在相应的代码,如有,则删除
    For Each oldModel In Modules
        If oldModel.Name = "TxtFileCode" Then
            oldModel.Delete
            Exit For
        End If
    Next
    '创建新模块
    Set NewModel = Application.Modules.Add
    NewModel.Name = "TxtFileCode"
    NewModel.InsertFile TxtFile
    Application.Run ("Hello")
    Application.DisplayAlerts = True
End Sub
文本文件的内容,就是一个完整的宏代码。
image.png
实际使用过程中还需要认真测试,不知道会遇到什么错误提示。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-6-29 14:57 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 19:43 , Processed in 0.039420 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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