乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 114|回复: 6

Excel VBA程序导入程序

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2014-10-8 12:40:39 | 显示全部楼层 |阅读模式
我已经搜索过,找不到一种方法来做到这一点,也许它不能做到。 有没有办法让一个Excel电子表格以编程方式将代码从另一个电子表格导入VBA IDE? 我有500个左右的电子表格需要更新代码,我不想剪切/粘贴到所有500个电子表格。 我希望有一段代码可以在每次打开主文件时更新主文件中的代码。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-10-8 13:49:12 | 显示全部楼层
我似乎记得看到了一些允许你访问VBE代码段的东西,但我也记得一些关于MS锁定它的事情,因为这是virii感染VBA模块的方式之一。
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-10-8 13:51:08 | 显示全部楼层
我害怕那个,或类似的东西。 我也以为RR在当时已经做了一些事情,但没有办法搜索它。 谢谢基思
回复

使用道具 举报

2

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
45
发表于 2014-10-9 03:37:52 | 显示全部楼层
我知道这是可以做到的。我特此引用我多年前遇到的一些东西,并为将来可能的
Excel VBA具有VBE对象,其对象层次结构简化版本是:
VBE
VBProject
VBComponent
CodeModule
Designer
属性
参考
VBProject对象应该是您作为开发人员正在寻找的,因为通过它的手段,您还可以编写用于添加和删除VBA模块或插入VBA代码的
代码但是,当
VBA宏尝试修改VBA项目中的组件时,Keith错误消息会告诉您安全问题,这取决于Excels信任中心对话框中的设置。您可以查看和更改此设置如下:
- 选择文件 ->选项
- 在 Excel 选项对话框中,单击“信任中心”选项卡
- 在“信任中心”选项卡中,单击“信任中心设置”按钮
- 在“信任中心”对话框中,单击“宏设置”选项卡
或者,可以使用“开发人员代码”“宏安全”命令直接转到一个对话框,其中包含一个标记为“信任对 VBA 项目对象模型的访问”的复选框,该对话框应默认情况下处于关闭状态。即使您选择信任工作簿中包含的宏,如果关闭此设置,宏也无法修改 VBA 项目。此设置适用于所有工作簿:您无法仅针对特定工作簿更改此设置。
要通过VBA检测此设置,请尝试访问VBProject对象,然后检查错误,如以下代码所示:
  1. On Error Resume Next
  2. Set x = ActiveWorkbook.VBProject
  3. If Err  0 Then
  4.     MsgBox “Your security settings do not allow this macro to run.”
  5.     Exit Sub
  6. End If[
  7. On Error GoTo 0

作为创建项目的开发人员,您需要启用对Visual Basic项目的信任访问设置
,我认为您可以找到VBComponent对象的“导出”,“删除”和“导入”方法对您的特定需求非常有用。
通过他们的方式,您可以分发用户(或自己使用它)一个工作簿,其中包含一个宏,该宏替换VBA模块以使用存储在文件中的更新版本进行更新。
希望这可以帮助你
再见
回复

使用道具 举报

2

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
45
发表于 2014-10-9 10:34:13 | 显示全部楼层
好吧,这很有帮助,现在弄清楚如何导入到ThisWorkbook。 谢谢
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-10-9 11:53:42 | 显示全部楼层
作为启动
程序 每个工作簿都由一个 VBProject 对象表示。
若要使用早期绑定访问它,请建立对 Microsoft Visual Basic for Applications 扩展性库的引用
工作簿对象具有返回 VBProject 对象的 VBProject 属性。
例如,使用
  1. Dim VBProj As VBProject
  2. Set VBProj = ActiveWorkbook.VBProject

,您可以创建一个表示活动工作簿的VBProject对象的对象变量
,然后您可以通过VBComponents集合访问VBProject的组件(UserForms,模块,类模块和文档模块),例如
  1. Dim VBC As VBComponent

后跟
  1. Set VBC = ThisWorkbook.VBProject.VBComponents(1)


  1. Set VBC = ThisWorkbook.VBProject.VBComponents(“Module1”)

,例如您可以使用类似
  1. Sub ListModules()
  2.     Dim VBProj As VBProject
  3.     Dim VBComp As VBComponent
  4.     Dim CodeMod As CodeModule
  5.    
  6.     Dim FirstLine As Long
  7.     Dim mssg As String
  8.    
  9.     ' set active workbook's VB Project
  10.     Set VBProj = ActiveWorkbook.VBProject
  11.    
  12.     ' Loop through its components
  13.     For Each VBComp In VBProj.VBComponents
  14.    
  15.         Set CodeMod = VBComp.CodeModule
  16.         
  17.         FirstLine = CodeMod.CountOfDeclarationLines + 1
  18.         Do Until FirstLine >= CodeMod.CountOfLines
  19.             mssg = mssg & VBComp.Name & ": " & CodeMod.ProcOfLine(FirstLine, vbext_pk_Proc) & vbNewLine
  20.             FirstLine = FirstLine + CodeMod.ProcCountLines(CodeMod.ProcOfLine(FirstLine, vbext_pk_Proc), vbext_pk_Proc)
  21.         Loop
  22.         
  23.     Next VBComp
  24.    
  25.     MsgBox mssg
  26. End Sub

的内容列出工作簿中的所有模块。您还可以在其中看到 VBComponent 属性“CodeModule”以及后面的一些属性和方法的使用。其中,您可以找到按F1键的在线帮助
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2014-10-9 14:49:23 | 显示全部楼层
谢谢,这会让我朝着正确的方向开始
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-4-20 18:20 , Processed in 2.587016 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表