问题标签 [vbide]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1224 浏览

vba - Import lines of code

Can we read scripts or lines of code to a module in ? Like we have the include function in .

For example:

We store this in Excel somewhere and call the range as xyz

Then while running a macro we call this like

Basically I want to run a few lines of code repetitively but don't want to create another macro and pass the parameters.

0 投票
1 回答
13793 浏览

excel - 使用 VBA 将模块插入新工作簿

我在网上进行了拖网,似乎无法找到一个简单的解决方案,所以希望你能提供帮助。

我现在有一个宏,它从 .txt 文件中获取数据,并每 3 分钟用最新数据覆盖一个 excel 文件。它使用覆盖的日期和时间命名新文件。

我想要的是具有“创建新工作簿”宏的工作簿还可以在创建每个新工作簿时添加一个新模块,包括模块内的预写宏(插入的模块将包含记录谁的代码当工作簿被打开和关闭时,将写入第三个工作簿,但我可以做到这一点)

我希望所有这些都可以通过第二个 Sub 来完成!

0 投票
2 回答
2401 浏览

vba - Excel VBA 将函数或子例程存储在数组中

在 C/C++ 中,当我有一堆函数(指针)时,我可以将它们存储在数组或向量中,并以一定的顺序调用其中的一些。可以在 VBA 中完成类似的操作吗?

谢谢!

0 投票
1 回答
185 浏览

vba - 迭代模块中定义的方法

我最近发现了 VBIDE 库,但我还没有完全掌握它的所有功能。我想创建一个方法,该方法将根据在我的项目中找到的类实例化正确的类。适合作为候选实例化Implement InterfaceA的类,并且我要实例化的确切类具有属性MType并返回Enumerated Value Correct

因此,总结一下我如何迭代我的项目中定义的类,以便找到 Correct为 Property返回的类MType,并实例化该类。

到目前为止,我知道我可以使用以下代码迭代我的模块:

我现在缺少的是如何遍历每个类的方法/属性以找出这些方法返回的内容?

这是我需要找到的方法,它因返回的值而异:

所以你可以看到这个属性非常简单,我假设它会一直返回相同的值。

更新: Per Dough Gancy 的观察部分答案位于此处, 我可以使用ProcBodyLine(InterfaceA_MType)ProcCountLines(InterfaceA_MType)迭代程序行,匹配那些具有IModel_MType = Correct.

这仅省略了基于代码模块实例化类。我怎么做?

0 投票
2 回答
6211 浏览

vba - 对 VBA 项目对象模型的信任访问灰显

我在 MS Office 2013 上。出于某些测试目的,我需要取消选中“信任对 VBA 项目对象模型的访问”复选框。但我无法这样做,因为它是灰色的(并且已被选中)。

可能是什么原因。如何启用复选框?

信任中心图片

0 投票
1 回答
1270 浏览

excel - OLE 自动化并与另一个 VBE / VBA IDE 交互

我熟悉 OLE 自动化并从给定的 VBA IDE / VBE(尤其是 Excel 的 VBE)控制其他应用程序。虽然我知道可以使用 SendKeys 方法作为一种基本上完成我想要做的事情的方法,但我觉得它在某些情况下可能不可靠(更不用说有点草率了)。

简而言之,我试图从 Excel 中将 VBA 模块写入文本文件(已经弄清楚了),然后让目标应用程序的 VBA IDE 导入模块并执行代码。

我对此的主要原因是 Excel 可用的关于所述目标应用程序的参考库有限制(而正如人们所期望的那样,目标应用程序的 VBA IDE 有更多的属性和方法可以使用,因为它的参考库是特定于应用程序本身,原因很明显)。

关于如何最好地做到这一点的任何想法?

只创建一个自定义 COM 引用或调整现有的 COM 引用会更好吗(我认为这相当困难,因为我不熟悉 C# 或 Visual Studio)?

(注意:如果您想知道,我正在使用反射会话(IBM,用于 Windows),并且对我正在使用的主要 COM(EXTRACOM)有相当广泛的了解。在反射会话 VBE 中有一些方法,例如.GetFieldText(无论应用程序光标放在给定字段上的什么位置,它都会返回整个字段名称。这可能比 EXTRACOM 更有用,EXTRACOM.GetString要求程序员首先指定字段长度和光标位置。另一个属性方法:(.GetFieldColor它将返回字段颜色的数字代码,EXTRACOM(Excel 的反射参考文件)缺少的属性/方法。

0 投票
2 回答
6760 浏览

vba - 对象“_Application”的方法“VBE”失败

我的一位客户在运行下面的 Excel VBA 代码时遇到问题。他收到以下错误Method 'VBE' of object '_Application' failed,但只有一次,在他打开 VBE 后,它开始工作。而且,直到昨天,它还在为他工作。

他正在使用 Excel 2010。

这是引发错误的代码。

0 投票
1 回答
1232 浏览

excel - 使用 VBIDE 从 Excel 用户窗体中删除控件

我需要从 75 个用户窗体中删除一些控件Excel。我让VBA代码循环遍历文件并使用VBIDE,我删除了代码。但是,一直无法掌握控件。

与其在我尝试过的代码上浪费时间,不如说是我一直在使用的对象:

谢谢大家

0 投票
1 回答
147 浏览

vba - 重命名 Visio 的 `ThisDocument` 模块会导致任何问题吗?

默认 Viso 文档的 CodeNameThisDocument与其他 Office 文档不同,该ThisDocument组件CodeName似乎是只读的。

如果我对 VBE 具有受信任的访问权限,那么我可以重命名组件,如下所示:

从那时起,我可以将对象称为FooBar而不是ThisDocument

但是,据推测,CodeName 是只读的是有原因的。到目前为止,我找不到重命名对象的任何问题,但我不确定是否可能会有一些意想不到的后果。

重命名ThisDocument组件是否安全/明智?

0 投票
1 回答
847 浏览

c# - 我怎么知道 `ThisWorkbook` 是 `Workbook`?

我正在使用 VBIDE API,不能假设宿主应用程序是 Excel 或任何 Office 应用程序。

所以我只知道我在看 a VBComponent,它Type就是vbext_ct_document

在 VBE 的即时窗格中,我可以获得以下输出:

但是该Sheet1对象只存在于运行时环境中,所以如果我是 C# 插件,我什至看不到它。

唯一可以接近我需要的东西是通过组件的ParentandNext属性:

这让我得到了我想要的类型名称......但是在错误的组件上!对于ThisWorkbook顶级文档对象,我将Application对象作为Parent

该方法可能有用,但前提是我对特定于主机的逻辑进行硬编码,该逻辑知道具有“应用程序”类型的“父”属性的任何组件都是Workbook当主机应用程序是 Excel 时的实例......并且不能保证其他主机中的其他文档模块甚至会有那个“父”属性,所以我很难过。

我对任何事情都持开放态度——从 p/invoke 调用和低级 COM“反射”魔法(ITypeInfo那种魔法)到......到......我不知道 -unsafe带有需要// here be dragons注释的时髦指针的代码-欢迎任何可能最终成为可行解决方案的线索。


AFAIK VBE 加载项与主机存在于同一进程中,因此在某个地方有一个指向VBA 项目中的ThisWorkbook任何Sheet1其他文档类型的指针。VBComponent

我想我只需要以某种方式抓住那个指针,我就会到达我需要的地方。