问题标签 [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.
vba - Import lines of code
Can we read scripts or lines of code to a module in vba? Like we have the include function in php.
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.
excel - 使用 VBA 将模块插入新工作簿
我在网上进行了拖网,似乎无法找到一个简单的解决方案,所以希望你能提供帮助。
我现在有一个宏,它从 .txt 文件中获取数据,并每 3 分钟用最新数据覆盖一个 excel 文件。它使用覆盖的日期和时间命名新文件。
我想要的是具有“创建新工作簿”宏的工作簿还可以在创建每个新工作簿时添加一个新模块,包括模块内的预写宏(插入的模块将包含记录谁的代码当工作簿被打开和关闭时,将写入第三个工作簿,但我可以做到这一点)
我希望所有这些都可以通过第二个 Sub 来完成!
vba - Excel VBA 将函数或子例程存储在数组中
在 C/C++ 中,当我有一堆函数(指针)时,我可以将它们存储在数组或向量中,并以一定的顺序调用其中的一些。可以在 VBA 中完成类似的操作吗?
谢谢!
vba - 迭代模块中定义的方法
我最近发现了 VBIDE 库,但我还没有完全掌握它的所有功能。我想创建一个方法,该方法将根据在我的项目中找到的类实例化正确的类。适合作为候选实例化Implement
InterfaceA
的类,并且我要实例化的确切类具有属性MType
并返回Enumerated Value
Correct
。
因此,总结一下我如何迭代我的项目中定义的类,以便找到 Correct
为 Property返回的类MType
,并实例化该类。
到目前为止,我知道我可以使用以下代码迭代我的模块:
我现在缺少的是如何遍历每个类的方法/属性以找出这些方法返回的内容?
这是我需要找到的方法,它因返回的值而异:
所以你可以看到这个属性非常简单,我假设它会一直返回相同的值。
更新: Per Dough Gancy 的观察部分答案位于此处,
我可以使用ProcBodyLine(InterfaceA_MType)
并ProcCountLines(InterfaceA_MType)
迭代程序行,匹配那些具有IModel_MType = Correct
.
这仅省略了基于代码模块实例化类。我怎么做?
vba - 对 VBA 项目对象模型的信任访问灰显
我在 MS Office 2013 上。出于某些测试目的,我需要取消选中“信任对 VBA 项目对象模型的访问”复选框。但我无法这样做,因为它是灰色的(并且已被选中)。
可能是什么原因。如何启用复选框?
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 的反射参考文件)缺少的属性/方法。
vba - 对象“_Application”的方法“VBE”失败
我的一位客户在运行下面的 Excel VBA 代码时遇到问题。他收到以下错误Method 'VBE' of object '_Application' failed
,但只有一次,在他打开 VBE 后,它开始工作。而且,直到昨天,它还在为他工作。
他正在使用 Excel 2010。
这是引发错误的代码。
excel - 使用 VBIDE 从 Excel 用户窗体中删除控件
我需要从 75 个用户窗体中删除一些控件Excel
。我让VBA
代码循环遍历文件并使用VBIDE
,我删除了代码。但是,一直无法掌握控件。
与其在我尝试过的代码上浪费时间,不如说是我一直在使用的对象:
谢谢大家
vba - 重命名 Visio 的 `ThisDocument` 模块会导致任何问题吗?
默认 Viso 文档的 CodeNameThisDocument
与其他 Office 文档不同,该ThisDocument
组件CodeName
似乎是只读的。
如果我对 VBE 具有受信任的访问权限,那么我可以重命名组件,如下所示:
从那时起,我可以将对象称为FooBar
而不是ThisDocument
但是,据推测,CodeName 是只读的是有原因的。到目前为止,我找不到重命名对象的任何问题,但我不确定是否可能会有一些意想不到的后果。
重命名ThisDocument
组件是否安全/明智?
c# - 我怎么知道 `ThisWorkbook` 是 `Workbook`?
我正在使用 VBIDE API,不能假设宿主应用程序是 Excel 或任何 Office 应用程序。
所以我只知道我在看 a VBComponent
,它Type
就是vbext_ct_document
。
在 VBE 的即时窗格中,我可以获得以下输出:
但是该Sheet1
对象只存在于运行时环境中,所以如果我是 C# 插件,我什至看不到它。
唯一可以接近我需要的东西是通过组件的Parent
andNext
属性:
这让我得到了我想要的类型名称......但是在错误的组件上!对于ThisWorkbook
顶级文档对象,我将Application
对象作为Parent
:
该方法可能有用,但前提是我对特定于主机的逻辑进行硬编码,该逻辑知道具有“应用程序”类型的“父”属性的任何组件都是Workbook
当主机应用程序是 Excel 时的实例......并且不能保证其他主机中的其他文档模块甚至会有那个“父”属性,所以我很难过。
我对任何事情都持开放态度——从 p/invoke 调用和低级 COM“反射”魔法(ITypeInfo
那种魔法)到......到......我不知道 -unsafe
带有需要// here be dragons
注释的时髦指针的代码-欢迎任何可能最终成为可行解决方案的线索。
AFAIK VBE 加载项与主机存在于同一进程中,因此在某个地方有一个指向VBA 项目中的ThisWorkbook
任何Sheet1
其他文档类型的指针。VBComponent
我想我只需要以某种方式抓住那个指针,我就会到达我需要的地方。