问题标签 [win32com]

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 回答
349 浏览

python - RegFree DLL 与 CPython 使用 win32com 模块

我目前正在使用 CPython 的 win32com 模块来使用 DLL。我知道有些人使用 IronPython 自动获取此 DLL 提供的函数列表。他们不需要注册 DLL。

我想和他们做同样的事情,但使用 CPython。

1)是否可以使用 CPython 和 win32com 连接到无 dll 注册。如何使其免注册?

2)如何获取DLL提供的函数列表?我想创建一个提供完整函数列表的 CPython 模块。

任何想法?

0 投票
1 回答
4766 浏览

python - Python win32com:Excel 将图表类型设置为 Line

此 VBA 宏有效:

这个 Python (near) Equivalent 几乎可以工作:

除了最后一点 - 我无法将图表类型设为“xlLine”(纯线图)。有任何想法吗 ?

0 投票
2 回答
487 浏览

excel - 如何强制 Excel VBA 使用更新的 COM 服务器

我正在开发一个从 Excel VBA 使用的 COM 服务器。当我更新服务器(编辑代码、注销、重新注册)时,Excel 似乎继续使用 COM 服务器的原始版本,而不是更新版本。我发现让它使用更新版本的唯一方法是关闭并重新打开 Excel,这有点烦人。有没有办法强制 Excel 使用新注册的版本(可能是某种“清除缓存”选项)?

更多细节:

该服务器正在 Python 中使用 win32com 开发。

在 VBA 中,我正在做类似的事情:

Foo.Bar 是我在注册表中注册的 COM 服务器。

如果我取消注册服务器然后运行 ​​VBA 代码,我会从 VBA 收到“无法创建对象”错误,因此它必须意识到正在发生某些事情。但是一旦我重新注册它就会选择旧版本。

任何提示表示赞赏!

谢谢,

安迪

0 投票
3 回答
3729 浏览

python - py2exe/pyinstaller 和 DispatchWithEvents

我有一个使用 win32com 库来控制 iTunes 的程序,但在将其编译成可执行文件时遇到了一些问题。问题似乎围绕使用DispatchWithEvents而不是Dispatch. 我创建了一个非常简单的程序来说明我的问题:

使用Dispatch,程序编译并正确运行。使用DispatchWithEvents,从命令行调用时程序运行良好,但在运行 exe 时会产生以下错误:

我也尝试过使用 PyInstaller,它给出了类似的错误:

我知道我可以在我的setup.py文件中手动添加类型库,但我想在具有不同版本 iTunes 的计算机上运行代码而不重新编译,所以我更喜欢动态创建它。如果设置/规范无法做到这一点,也许还有另一种加载事件的方法?谢谢。


添加:

多亏了 Ryan,我发现我可以获取生成的 py 文件,经过一番挖掘,能够提出以下内容。

获取生成的 py 文件(来自makepy.py)并将其重命名为cominterface.py. 然后您需要执行以下操作来实际创建带有事件处理程序的 COM 对象。

然后你就可以开始你的事业了。

0 投票
1 回答
1499 浏览

python - 如何用python搜索和替换ms word doc中所有出现的字符串?

我现在很困惑。基于我可以使用 Win32 COM 替换 word 文档中的文本吗?我能够编写一个简单的模板系统,该系统从模板 word doc(在 Python 中)生成 word docs。

我的问题是“文本字段”中的文本不是这样找到的。即使在 Word 本身中,也没有搜索所有内容的选项 - 您实际上必须在“主文档”和“文本字段”之间进行选择。作为 Windows 世界的新手,我尝试浏览 VBA 文档,但没有找到任何帮助(可能是因为“文本字段”是一个非常常见的术语)。

这是我的代码的相关部分。我现在能够自己解决所有问题(提示:如果你想用超过 256 个字符替换字符串,你必须通过剪贴板等来完成......)

0 投票
1 回答
5924 浏览

python - 如何使用win32com在python中打开写入保留的excel文件?

我正在尝试在 python 中使用 win32com 打开一个写保护的 ms excel 2007 文件——我知道密码。我可以通过用户在 Excel 对话框中输入密码来打开它。我希望能够在没有任何用户交互的情况下打开文件。我尝试了以下方法,但它仍然会弹出对话框。

请问我做错了什么?

谢谢,

戴夫。

0 投票
1 回答
2066 浏览

python - win32com 相当于 xlrd 的 sheet.ncols

xlrd 可以很容易地知道最后一列是什么。

有没有使用win32com 的简单方法?

我试过使用 ws.UsedRange.Rows.Count 但这似乎没有给出正确的答案。

0 投票
3 回答
2651 浏览

python - 为什么win32com比xlrd慢那么多?

我有相同的代码,使用 win32com 和 xlrd 编写。xlrd 在不到一秒的时间内执行算法,而 win32com 需要几分钟。

这是win32com:

和 xlrd

0 投票
1 回答
3107 浏览

python - 在 python 中处理多个 Excel 工作簿

使用 win32com,我打开了两个工作簿。

  1. 你怎么知道哪个是活跃的?
  2. 你如何改变哪个是活跃的?
  3. 你怎么能关闭一个而不是另一个?(不是 Application.Quit())
0 投票
1 回答
3413 浏览

python - Python win32com 使用 Bloomberg 插件打开 Excel

我正在尝试自动构建 Excel 2007 电子表格,该电子表格使用 Bloomberg 插件来拉低实时价格。问题是当我通过 win32com 打开 Excel 时,Bloomberg 插件没有加载(所以所有公式都以“#NAME?”错误结束)。

手动卸载并重新安装插件有效,但从录制的宏中复制 VBA 代码会导致“运行时错误 '13':类型不匹配”错误。我可以单击“结束”按钮,一切运行正常,但我希望完全自动化。

我的代码是:

设置 DisplayAlerts = False 不会捕获运行时错误。