我已经构建了一个GUI(使用PyQt5),它允许我读取CSV,做了一些基本操作并将其发送到Excel。
然后,我使用xlwings将此GUI集成到Excel中但我遇到了问题。当我使用GUI时,我无法操纵Excel中的数据。我认为这是因为我的宏仍在运行。
有没有办法在不失去Excel控制的情况下运行我的GUI?
def Main():
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
并在Excel中:
Sub GUI()
RunPython ("import UImainwindow; UImainwindow.Main())
End sub
答案 0 :(得分:1)
最终我得到了一个解决方案。
我修改ExecuteWindows子以添加如下可选参数:
Sub ExecuteWindows(IsFrozen As Boolean, PythonCommand As String, PYTHON_WIN As String, LOG_FILE As String, SHOW_LOG As Boolean, Optional PYTHONPATH As String, Optional WaitOnReturnBool As Boolean)
然后我像这样修改RunPython函数
Public Function RunPython(PythonCommand As String, Optional ByVal WaitOnReturnBool As Boolean = True)
和
ExecuteWindows False, PythonCommand, PYTHON_WIN, LOG_FILE, SHOW_LOG, PYTHONPATH, WaitOnReturnBool
最后用两个参数
调用RunPython函数RunPython command, WaitOnReturnBool
我必须在我的脚本中使用wb = xw.Workbook.active()而不是wb = xw.Workbook.caller()但它可以工作。 这让我可以在不失去Excel控制权的情况下运行外部GUI。