首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从VBA到Python再回到Excel

从VBA到Python再回到Excel
EN

Stack Overflow用户
提问于 2019-08-20 11:42:14
回答 1查看 467关注 0票数 1

我正在尝试使用Excel和Python3.7.1制作一个自动化程序。

  • 从Excel工作表开始,用户应该单击以下按钮 被分配给宏(实际上它是一个ActiveX控件命令按钮)。
  • 这个宏运行Python并关闭Excel窗口。
  • Python脚本从另一个.xlsx文件中读取数据,进行回归,并将结果存储到熊猫DataFrame中。

我现在要做的是将这个DataFrame写入运行Python的.xlsm文件中的第二个工作表(已经创建,但为空)。

我尝试过不同的方法,在互联网上寻求很多帮助,但似乎没有任何效果。我也读过关于"vbaProject.bin“的文章,但是我无法从命令提示符中调用它的文件中提取内容。

要么按预期显示数据,但按钮不再“可点击”,要么根本不显示数据。有时文件甚至不可用,因为它的类型已经被python更改了。

我使用了openpyxl和xlsxwriter,但都徒劳无功。下面是一段代码:

代码语言:javascript
代码运行次数:0
运行
复制
wb = load_workbook('PythonLauncher.xlsm', keep_vba=True)
writer = pd.ExcelWriter('PythonLauncher.xlsm', engine=openpyxl)
writer.book = wb
DtFrm.to_excel(writer, writer.book.sheetnames[1], columns=None, index=False)
writer.save()
writer.close()

最佳结果将是在不丢失单击功能的情况下在.xlsm文件的第二个工作表中获得.xlsm。

EN

回答 1

Stack Overflow用户

发布于 2019-08-27 04:13:01

您可以从Python轻松地运行Excel/VBA。下面是两个完全相同的例子。

代码语言:javascript
代码运行次数:0
运行
复制
from __future__ import print_function
import unittest
import os.path
import win32com.client

class ExcelMacro(unittest.TestCase):
    def test_excel_macro(self):
        try:
            xlApp = win32com.client.DispatchEx('Excel.Application')
            xlsPath = os.path.expanduser('C:\\your_path\\test.xlsb')
            wb = xlApp.Workbooks.Open(Filename=xlsPath)
            xlApp.Run('Macro1')
            wb.Save()
            xlApp.Quit()
            print("Macro ran successfully!")
        except:
            print("Error found while running the excel macro!")
            xlApp.Quit()
if __name__ == "__main__":
    unittest.main()
代码语言:javascript
代码运行次数:0
运行
复制
import os
import win32com.client

#Launch Excel and Open Wrkbook
xl=win32com.client.Dispatch("Excel.Application")  
xl.Workbooks.Open(Filename="C:\\your_path\\test.xlsm") #opens workbook in readonly mode. 

#Run Macro
xl.Application.Run("excelsheet.xlsm!modulename.macroname") 

#Save Document and Quit.
xl.Application.Save()
xl.Application.Quit() 

#Cleanup the com reference. 
del xl
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57572866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档