我试图使用Python的win32com
在VBA中传递变量Nothing
。我试图使用None
,但它返回了'typedismatch'
谁能帮忙吗?在
谢谢你!在
例如:
' Book1.xlsm!Module1
Function test(arg As Object) As String
If arg Is Nothing Then
test = "Success"
Exit Function
Else
test = "Failure"
Exit Function
End If
End Function
在Python中:
^{pr2}$回复说:
runfile('C:/Users/shwang/Downloads/untitled0.py', wdir='C:/Users/shwang/Downloads')
Traceback (most recent call last):
File "<ipython-input-22-301693920f2c>", line 1, in <module>
runfile('C:/Users/shwang/Downloads/untitled0.py', wdir='C:/Users/shwang/Downloads')
File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/shwang/Downloads/untitled0.py", line 16, in <module>
test_str = xl.Application.Run('Book1.xlsm!Module1.test', pythoncom.Empty)
File "<COMObject <unknown>>", line 14, in Run
File "C:\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147352561), None)
在VBA中,},它们通常引用COM对象(即Excel对象库或外部应用程序的对象库)。不能为vbeem>long类型赋值。通常程序员在代码块的末尾使用它来释放内存中的对象。在
Nothing
仅用作两种类型的未初始化默认值:Object
或{因此,VBA的
Nothing
(COM类型的一个特殊值)和Python的值类型(包括None
)之间没有严格的转换,这粗略地表示任何类型的为空或没有值。在也就是说,如果传递一个已经用
xl
初始化的COM对象,那么代码就不会出错。下面的输出FAILURE
。如果您可以声明一个未初始化的COM对象,该对象将不携带任何内容,那么您可以将其传递到函数中。但是调用Dispatch
需要一个命名对象。22号线!在相关问题 更多 >
编程相关推荐