![](/img/trans.png)
[英]How to set COM object to call Python script using Excel VBA?
[英]Using Python COM objects from Excel VBA
我正在嘗試創建要在Excel中使用的python類,並從Python引用:Win32上的編程。
當前:Python腳本(win32comLibrary.py)
class PythonUtilities:
_public_methods_ = [ "SplitString" ]
_reg_progid_ = "PythonDemos.Utilities"
_reg_clsid_ = "{AF272547-D5BC-4452-852E-3F8746672097}"
def SplitString(self, val, item = None):
import string
if item!=None: item = str(item)
return string.split(str(val), item)
if __name__== "__main__":
print("Registering COM server...")
import win32com.server.register
win32com.server.register.UseCommandLine(PythonUtilities)
Excel VBA
Sub test()
Set PythonUtils = CreateObject("PythonDemos.Utilities")
response = PythonUtils.SplitString("Hello From VB", " ")
For Each Item In response
MsgBox Item
Next Item
End Sub
問題:(a)在reponse = ...行,存在runtime error '-2147467259 (80004005)': Unexpected Python Error: Traceback (most recent call last): File .....
(b)當我在cmd中鍵入python win32comLibrary.py --unregister
時,它返回正在Registering COM server...Traceback (most recent call last): File "win32comLibrary.py", line 19, in (module) import win32com.server.register ImportError: No module named win32com.server.register
我目前正在使用anaconda(spyder),並已安裝pywin32。 從Python調用win32com.client方法似乎沒有引發任何錯誤。
任何援助將不勝感激。
我已經設法解決了這個問題-僅解決了這一問題。 不知道它與舊版本的python和3.x之間的區別是否似乎不再起作用,但string.split(str(val), item)
似乎不再起作用。 相反,我將return語句更改為return val.split(item)
。 我的監督-道歉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.