Excel-VBA 从文本文件导入模块(无需信任中心)

2024-01-12

我正在尝试创建一个自定义的子程序和函数库,在网络位置中另存为 .txt 文件,我正在创建的工作簿的各个用户可以根据他们选择的用户表单函数导入它们。工作簿的用户只能通过用户表单使用工作簿。我不想要求他们修改其安全信任中心设置以使此导入库代码正常工作,因此我不想使用wb.VBproject.References.import命令,或将它们添加到插件中。

我发现这种方法非常有效,但前提是没有其他工作簿打开。如果另一个工作簿打开,则此代码最终会在另一个工作簿中插入一个新模块,然后用户窗体调用就毫无意义。

我不明白这是怎么可能的,因为我在“With ThisWorkbook”语句中引用了所有这些代码。我究竟做错了什么?

Sub importLib(libName As String)
  Application.DisplayAlerts = False

  Path = "C:\Users\(username)\Desktop\excelLibraries\" 'Example only, my path is actually a network location
  lib = Path & libName
  Dim wb As Workbook
  Set wb = ThisWorkbook
  With wb
    On Error Resume Next
    Dim wbModules As Modules

    Set wbModules = .Application.Modules 'wb=ThisWorkbook, but doesn't point to this workbook when other workbooks open???

    'wb.VBProject.VBComponents.Import lib '---> library saved as .bas, but this requires the user to change their security settings
    'wb.VBProject.References.AddFromFile lib '---> library saved as add-in reference, but this requires user to change security settings

'----This method works when no other workbooks are open
    For Each a In wbModules 'Clear any previous Library Module
        If a.Name = "Library" Then
            a.Delete
            Exit For
        End If
    Next

    Set m = wbModules.Add 'Create a new Library Module
    m.Name = "Library"
    m.InsertFile lib 'Insert the code
   On Error GoTo 0
 End With
 Application.DisplayAlerts = True

 End Sub

 Sub callsub()
  importLib "library1.txt"
 End Sub

进行以下更改似乎对我有用。

  1. Change Dim wbModules As Modules to Dim wbModules。否则我会收到类型不匹配错误。
  2. 去除.Application in Set wbModules = .Application.Modules.

EDIT:

As @马蒂厄·吉登 https://stackoverflow.com/users/1188513/mathieu-guindon已在评论中指出,但值得在问题正文中保留,Application指的是Excel应用程序实例,host. The Modules集合包含所有打开的模块,无论工作簿如何。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel-VBA 从文本文件导入模块(无需信任中心) 的相关文章

随机推荐

  • 如何合并动物园对象列表

    我有一个动物园对象列表 我想合并它们 我已经确保它们的长度都相同 看来为了合并它们 我需要做类似的事情 merge my list 1 my list 2 但随着列表长度的增加 这很快就会变得很麻烦 有人对处理这个问题有建议吗 Use do
  • Android SpeechRecognizer设置识别引擎?

    我正在使用 SpeechRecognizer 将语音转换为文本 我使用的是三星 当我将语音识别器设置为 Samsungpowered by Vlingo 时遇到错误 在更改为 Google 后错误消失了 我想知道是否有任何方法可以以编程方式
  • Docker:导出镜像失败:创建镜像失败:获取层失败

    我收到以下错误 导出图像失败 创建图像失败 获取图层失败 sha256 xxxxxxxxxxxxx 层不存在 Dockerfile FROM openjdk 8 COPY lib usr src app BOOT INF lib COPY
  • 在 C# vsto Excel 中选择性粘贴

    我正在开发 C vsto Excel 应用程序 每当用户从另一个 Excel 工作表将某些内容粘贴到 Excel 模板中时 它还会将单元格格式与单元格数据一起粘贴到 Excel 模板中 我想避免这种情况 所以我用谷歌搜索 发现了术语 特殊粘
  • 将元素存储在内存中以防止过于频繁地更新 DOM?

    目前我有一个循环在每次迭代中更新 DOM 我知道这是一种不好的做法 您应该尽可能少地更新 DOM 以提高速度 所以我想知道如何编辑下面的内容 以便我可以将所有元素存储在一个元素或其他元素中 然后在循环结束后执行单个 DOM 添加 这是循环
  • 文本不会被 swift UI 包裹

    即使设置后 lineLimit nil 文本不会被换行 var body some View VStack alignment center Text SwiftUI is a modern way to declare user inte
  • 如何设置自定义单元格的角半径

    这是我的示例输出 其中下面的详细信息中有三个单元格 我为每个自定义单元格设置了角半径 但它无法正常工作 第一个单元格的角半径不起作用 第二个单元格的右上角和顶部左边正在工作 请说明为此做什么 void layoutSubviews supe
  • 临时变量的 C++ 生命周期 - 这安全吗?

    如果我正确理解临时对象生命周期的规则 那么这段代码应该是安全的 因为临时对象的生命周期stringstream in make string 持续到完整表达式结束 我不是 100 确信这里没有一个微妙的问题 但有人可以确认这种使用模式是否安
  • 子类化 UICollectionViewLayout 并分配给 UICollectionView

    我有一个 UICollectionViewController void viewDidLoad super viewDidLoad assign layout subclassed below self collectionView co
  • DebugDiag:如何手动注入 LeakTrack.dll

    我有一个来自生产的故障转储来识别内存泄漏 当我使用 DebugDiag v2 update 2 时 我收到一份报告 DebugDiag 没有检测到 w3wp DMP 中加载的 LeakTrack dll 因此没有泄漏 对此文件进行了分析 如
  • 错误:返回 void,return 关键字后面不能跟对象表达式

    private void QuestionAnswer Load object sender EventArgs e txtQuestion Enabled false txtQuestion BackColor Color White g
  • C 预处理器宏扩展

    我很难理解 C 预处理器在以下上下文中如何应用重写规则 我有以下宏 define A x A x define B x B x define X x x 这个想法是 每个宏都使用串联来创建一个新的表达式 它本身可以是一个宏 如果它是一个宏
  • Python3 硒问题

    我想通过以下方式抓取一些评论Web page https hotels ctrip com hotel 347422 html isFull F ctm ref hod sr lst dl n 1 8 当我尝试通过 Selenium 选择转
  • 如何单独使用 CSS 为 IE 和 Firefox 获得奇数/偶数着色?

    我的 Web 项目使用 php 但我需要单独使用 CSS 进行着色 因此我需要在 Firefox 和 Internet Explorer 中运行的代码 此代码已编写 但在 Internet Explorer 中不起作用 tbl css co
  • C 中指针的 const 用法

    我正在复习 C 有一个关于const与指针一起使用 我理解下面的代码 const char someArray 这是定义一个指向 char 类型和const修饰符意味着存储在someArray无法更改 然而 下面这句话是什么意思呢 char
  • 重复声明 TypeScript Getter Setter

    我正在尝试为 TypeScript 中的字段创建 getter 和 setter searchFilter string get searchFilter string return this searchFilter set search
  • 在 Windows 10 上安装 SQL Server 2017 开发人员版时出现“哎呀”错误

    我正在尝试使用 基本 安装类型安装 SQL Server 2017 Developer 版本 但它给出以下错误消息 Oops 无法安装 SQL Server setup exe 它尝试安装的构建版本是14 1710 3866 2 我已经尝试
  • 告诉 gradle 绕过依赖检查

    我在客户站点 位于防火墙后面 我正在尝试编译 但 gradle 一直在尝试检查我的依赖项 公司防火墙明确阻止 Maven 下载 因此我的构建失败 现在我之前已经编译过 所以依赖项确实已经存在于我的 user gradle 文件夹中 但已经超
  • silverlight 和 DataContractSurrogates 中都存在该类型

    我正在使用 silverlight 4 和 ria 服务 我收到一个错误说 类型 eLab Web SessionsHWFile 同时存在于 eLab Web dll 和 DataContractSurrogates c96b3601 cd
  • Excel-VBA 从文本文件导入模块(无需信任中心)

    我正在尝试创建一个自定义的子程序和函数库 在网络位置中另存为 txt 文件 我正在创建的工作簿的各个用户可以根据他们选择的用户表单函数导入它们 工作簿的用户只能通过用户表单使用工作簿 我不想要求他们修改其安全信任中心设置以使此导入库代码正常