簡體   English   中英

從Excel VBA使用Python COM對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM