替换VBA的对象"清空"与pythoncom.Missing不起作用

时间:2015-02-04 20:06:00

标签: python api win32com solidworks

几年前,我用Python编写脚本来自动完成我在SolidWorks_2012中所做的一些繁琐的过程。我在Win7 32位上使用python 27 32位和SolidWorks_2012 32位运行该脚本。

现在,我遇到了完全相同的问题,我尝试使用旧脚本,但在 OpenDoc6 (以及其他函数,其中值通过ref 传递),它会引发异常:

"Objects of type 'PyOleMissing' can not be converted to a COM VARIANT"

以下是我无法工作的一些示例:

import win32com.client as win32
import pythoncom

sw = win32.Dispatch('SldWorks.Application')
path_to_file = "some_path"
sw_asm = sw.OpenDoc6(path_to_file, 2, 1, "", pythoncom.Missing, pythoncom.Missing)

以下是VBA文档中此函数的一些规范:

Function OpenDoc6( _
   ByVal FileName As System.String, _
   ByVal Type As System.Integer, _
   ByVal Options As System.Integer, _
   ByVal Configuration As System.String, _
   ByRef Errors As System.Integer, _
   ByRef Warnings As System.Integer _
) As ModelDoc2

正如你所看到的,最近有两个是通过引用传递的。

同样here是没有任何解决方案的同一问题。 如果这可能很重要,现在我正在运行win 8 64,python 27 32/64和SolidWorks 2014 64.

提前谢谢!

1 个答案:

答案 0 :(得分:0)

只需插入空变量。在VBA中有相同的错误,你必须传递声明为LONG的变量,否则它将无效。