艺赛旗RPA全面免费下载中
点击下载
http://www.i-search.com.cn/index.html?from=line27
业务场景
使用 win32com 运行 Excel 中的宏运算(VBA),会遇到 VBA 运行的最后一步会弹出消息提示框,需点击这个消息提示框之后,VBA 才能运行结束,所以在运行 VBA 之后加入 Try 组件去点击时无法点击的,所以考虑使用多线程来实现。
流程代码
import ubpa.iautomation as iautomation
import threading
import pythoncom
import time
#点击消息提示框按钮
def cilck_ok():
while True:
Try异常
try:
# 鼠标点击
iautomation.WinSearchDepth=2
selectorJson = {"selector":[{"ControlType":"按钮","ControlTypeID":"0xC350","Index":"1"},
{"ControlType":"对话框","ControlTypeID":"0xC370","Index":"1"}]}
iautomation.do_click(win_class=r‘XLMAIN‘,win_name=r‘aaaa.xlsm - Excel‘,selector=selectorJson,button=r‘left‘,curson=r‘center‘,offsetX=0,offsetY=0,times=1,run_mode=r‘unctrl‘,waitfor=3)
time.sleep(1)
# Break中断
break
except Exception as e:
pass
finally:
pass
#VBA运行代码
def run_vba(path):
‘‘‘
一定要添加pythoncom.CoInitialize()
一定要添加pythoncom.CoInitialize()
一定要添加pythoncom.CoInitialize()
重要的事情说三遍
‘‘‘
#CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象
pythoncom.CoInitialize()
#载入Excel
xlApp=win32com.client.Dispatch("Excel.Application")
#设置是否打开Excel
xlApp.Visible=True
#设置是否显示警告和消息框
原文地址:https://blog.51cto.com/14253212/2402651
时间: 2024-11-03 22:42:59