簡體   English   中英

分發由xlwings驅動的Excel文件。 “ ActiveX組件無法創建對象”錯誤

[英]Distributing xlwings-powered Excel files. 'ActiveX component can't create object' error

我有一個Excel文件,該文件高度依賴以python(xlwings)編程的UDF。 它在安裝了python和插件的PC上工作得很好。 問題是我必須將文件發送給一群什至不知道python是什么的人。 由於存在UDF,因此無法使用凍結的可執行文件。 所以我做了什么:

  1. 從python.org下載了可嵌入的python安裝(Windows x86可嵌入的zip文件),並將其解壓縮到xlsm文件所在的文件夾(在名為“ Python”的單獨文件夾中)。

  2. 從bootstrap.pypa.io下載的get-pip.py,取消注釋文件python36._pth中的“導入站點”行,運行了“ python get.pip.py”。

  3. 從Christoph Gohlke的絕佳站點下載了pywin32和comtypes輪子,並使用“ pip install [filename] .whl”進行了安裝。 已安裝的xlwings('pip install xlwings')。 此安裝的總大小為50Mb。

  4. 創建了一個安裝了xlwings模塊的新文件(“ xlwings quickstart myproject --standalone”)。 將“ _xlwings.conf”表重命名為“ xlwings.conf”,然后在“解釋器”字段中輸入以下公式: =LEFT(CELL("filename";A1);FIND("[";CELL("filename";A1))-1) & "Python\\pythonw.exe"它將在打開文件的任何位置自動計算到python解釋器的正確路徑。

宏和UDF似乎可以正常工作,但是每次打開文件時,所有UDF公式都會拋出“ ActiveX組件無法創建對象”錯誤。 如果我強制進行重新計算([CTRL]-[ALT​​]-[SHIFT] -F9),所有操作將再次開始,但是我不能指望最終用戶會知道如何執行此操作。 有沒有使UDF開箱即用的技巧? 或者,也許有一種更方便的方式來分發由xlwings支持的Excel文件?

正如Phillip在評論部分中建議的那樣,可靠的解決方法是將以下VBA代碼添加到“ ThisWorkbook”模塊中:

Private Sub Workbook_Open()
Application.CalculateFull
End Sub

打開工作簿后,它將啟動完全重新計算。 但是,如果xlwings順利進行而沒有任何修改,那將是很好的。 在我看來,如此出色的一攬子計划唯一阻止其被更廣泛采用的原因是發行問題。

不幸的是,我不能支持菲利普的評論,也不能對他表示感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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