29
|
I. J. Kennedy ShankarSangoli · 技术社区 · 14 年前 |
![]() |
1
33
科尼利厄斯的回答部分正确。他的代码获取当前实例,然后生成一个新实例。 获取对象 对于VBA项目,创建两个模块,一个是代码模块,另一个是带有一个名为Command1的命令按钮的窗体。您可能需要添加对Microsoft.Excel的引用。 此代码在即时窗口中显示每个正在运行的Excel实例的每个工作簿的所有名称。
|
![]() |
2
9
我相信VBA比查尔斯想象的更强大;) 如果只有一些棘手的方法从 GetObject and CreateObject 我们会解决你的问题! 编辑:
|
![]() |
3
8
我认为在VBA中,您可以访问另一个正在运行的实例中的应用程序对象 . 如果知道在另一个实例中打开的工作簿的名称,则可以获取对应用程序对象的引用。看到了吗 Allen Waytt's page
允许我获取一个指向
我相信“ExampleBook”应该是完整的路径,至少在Excel2010中是这样的。我目前正在自己尝试,所以我会在得到更多细节后尝试更新。 如果不同的实例打开了相同的工作簿,但只有一个实例具有写访问权限,那么可能会出现复杂的情况。 |
![]() |
4
7
多亏了这篇很棒的文章,我有了一个例程来查找当前运行在机器上的所有Excel应用程序的数组。问题是我刚刚升级到64位的Office2013,结果都出了问题。
|
|
5
5
我也有类似的问题/目标。
所以我取了他的代码,在GetExcelObjectFromHwnd中放了一个for循环,把1改成了一个计数器。结果是我可以获得所有活动的excel工作簿,并返回我需要跨excel实例访问和访问其他WB的信息。
对于名称,我只使用基本文件名,例如“example.xls”。这个代码片段通过在目标WB的每个WS上吐出A6的值来证明其功能。像这样:
所以现在ForEachLoop最初创建的整个模块看起来是这样的,我已经指出了我所做的更改。它确实有一个msgbox弹出窗口,这是我为了调试而留在代码段中的。一旦找到你的目标就把它去掉。代码:
我重复一遍,这是可行的,使用TargetWB类型中的变量,我可以跨Excel实例可靠地访问工作簿和工作表。 我看到的解决方案唯一的潜在问题是,如果您有多个同名的WB。现在,我相信它会返回这个名字的最后一个实例。如果我们在If中添加一个Exit,那么我相信它将返回它的第一个实例。我没有仔细地测试这一部分,因为在我的应用程序中,只有一个打开的文件实例。 |
![]() |
6
0
为了补充James MacAdie的答案,我认为您执行redim太晚了,因为在checkHwnds函数中,您在尝试检查最大值为100的值时,会出现超出范围的错误,即使您尚未完全填充数组?我修改了下面的代码,它现在为我工作。
|
![]() |
7
-4
|
![]() |
CPS · 当变量值为空时,在另一个变量中赋值 2 年前 |
![]() |
xris23 · 通过VBA选择命名范围,让用户直接编辑单元格 2 年前 |
![]() |
Stormer · 从Access格式化Excel单元格无效 2 年前 |
![]() |
j johns · 通过VBA将ascii art添加到命令提示符 2 年前 |
![]() |
BinaryCat · Excel-将单元格转换为具有成对数据的行 2 年前 |
![]() |
Waleed · 以下拆分函数的(0)表示什么? 2 年前 |
![]() |
smrmodel78 · VBA创建表格未选择正确的范围 2 年前 |