ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 代码模块导入问题。

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-31 18:22 | 显示全部楼层
crazy0qwer 发表于 2016-10-31 18:13
可以用代码读取程序后再写入对应工作表。、
但是我还有个方法:你需要导入的代码是在一个工作簿中编辑吗 ...

其实改写代码时就是在一个工作簿中做的,改好后再分别替换掉其他工作簿对应的工作不上去,完全可以按你的思路编写程序,没必要在导出导入的,请费神,写一下,先谢谢。

TA的精华主题

TA的得分主题

发表于 2016-10-31 18:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
SCL5801 发表于 2016-10-31 17:20
我在网上找了好久了,找到的都是导成类模块,因此特来求教高手解决。网上也有把写好的代码再编到程序中, ...

你说的这些,就是代码升级的程序编写的问题了,就不是导入了

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-31 18:57 | 显示全部楼层
microyip 发表于 2016-10-31 18:36
你说的这些,就是代码升级的程序编写的问题了,就不是导入了

就是代码升级,或者说修改代码,代码改好后要把其他的工作簿的代码也进行相应修改,原来的思路是把改好的代码导出,然后再导入其他工作簿中。

TA的精华主题

TA的得分主题

发表于 2016-10-31 23:24 | 显示全部楼层
本帖最后由 crazy0qwer 于 2016-10-31 23:34 编辑
SCL5801 发表于 2016-10-31 18:22
其实改写代码时就是在一个工作簿中做的,改好后再分别替换掉其他工作簿对应的工作不上去,完全可以按你的 ...

貌似不用?(1、勾选 "信任对 VBA 工程对象模型的访问" , 开启这个功能后可能增加中宏病毒风险。)

2、如需批量更新,请先自行加入对文件的循环。

代码更新.rar (17.37 KB, 下载次数: 37)
  1. Sub Update()
  2.     Dim F
  3.     Dim Cl As Object
  4.     Dim I As Long, N As Long
  5.     Dim Ar() As String
  6.     On Error Resume Next
  7.     Application.ScreenUpdating = False
  8.     Application.DisplayAlerts = False
  9.     Application.EnableEvents = False    '防止open close 等事件触发
  10.     '*****************************************************************
  11.     '获取新代码
  12.     ReDim Ar(ThisWorkbook.VBProject.VBComponents.Count, 2)
  13.     For Each Cl In ThisWorkbook.VBProject.VBComponents
  14.         If m.Name <> "Update" Then  '不读取本模块代码
  15.             Ar(N, 1) = Cl.Name
  16.             Ar(N, 2) = Cl.CODEMODULE.Lines(1, Cl.CODEMODULE.COUNTOFLINES)
  17.             N = N + 1
  18.         End If
  19.     Next
  20.     '*****************************************************************
  21.     '获取待更新文件
  22.     F = Application.GetOpenFilename("Excel(*.xls*),*.xls*", , "选择要更新的文件", , False)
  23.     If F = False Then Exit Sub
  24.     '*****************************************************************
  25.     '打开待更新文件,删除旧代码,写入新代码
  26.     With Workbooks.Open(F)
  27.         With .VBProject
  28.             For I = 0 To N - 1
  29.                 Set Cl = Nothing
  30.                 Set Cl = .VBComponents(Ar(I, 1))
  31.                 If Not Cl Is Nothing Then
  32.                     With Cl.CODEMODULE
  33.                         .DELETELINES 1, .COUNTOFLINES
  34.                         .ADDFROMSTRING Ar(I, 2)
  35.                     End With
  36.                 End If
  37.             Next
  38.         End With
  39.     '*****************************************************************
  40.     ' XLSX 文件需要另存为启用宏的工作表 XLSM 格式
  41.         If UCase(Right(F, 4)) = "XLSX" Then
  42.             .SaveAs Left(F, Len(F) - 5), 52
  43.             'Kill F   '删除 XLSX 格式原文件
  44.        Else
  45.             .Save
  46.         End If
  47.         .Close True
  48.     End With
  49.     Application.EnableEvents = True
  50. End Sub
复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-11-1 10:26 | 显示全部楼层
crazy0qwer 发表于 2016-10-31 23:24
貌似不用?(1、勾选 "信任对 VBA 工程对象模型的访问" , 开启这个功能后可能增加中宏病毒风险。)

2 ...

十分感谢crazy0qwer 老师,搞定。

TA的精华主题

TA的得分主题

发表于 2017-4-19 21:17 | 显示全部楼层
这个代码升级我试过不成功啊

TA的精华主题

TA的得分主题

发表于 2018-7-19 16:38 | 显示全部楼层
crazy0qwer 发表于 2016-10-31 23:24
貌似不用?(1、勾选 "信任对 VBA 工程对象模型的访问" , 开启这个功能后可能增加中宏病毒风险。)

2 ...

感谢帮助,我使用codemodule.addfromfile filepath总是会出现问题,后来用了你的codemodule.addfromstring才顺利实现,不知道这是为什么呢?

TA的精华主题

TA的得分主题

发表于 2018-7-20 22:39 | 显示全部楼层
dogingate 发表于 2018-7-19 16:38
感谢帮助,我使用codemodule.addfromfile filepath总是会出现问题,后来用了你的codemodule.addfromstrin ...

对比下这两个方法的帮助文件吧。

无标题.png

TA的精华主题

TA的得分主题

发表于 2018-7-20 22:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
既然是多个工作薄,需要使用相同的代码,不如直接做成一个插件.何必这么麻烦
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-10 16:43 , Processed in 0.026657 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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