通过python运行vba宏,但能否在python中添加进度条来测量vba procress?

通过python运行vba宏,但能否在python中添加进度条来测量vba procress?,python,progress-bar,Python,Progress Bar,我目前正在运行一个使用python的VBA宏,因此我可以自动化一些过程,我目前还使用TQM向我的其他python代码中添加一个processbar,这非常有用 是否有人知道是否可以运行宏,测量需要多长时间,并使用进程栏查看我所处的阶段,因为我已将其设置为在后台运行?代码需要5-6个小时才能运行,所以最好知道我还有多长时间 import xlwings as xw def run_mac(file_path): try: xl = xw.App(visible=

我目前正在运行一个使用python的VBA宏,因此我可以自动化一些过程,我目前还使用TQM向我的其他python代码中添加一个processbar,这非常有用

是否有人知道是否可以运行宏,测量需要多长时间,并使用进程栏查看我所处的阶段,因为我已将其设置为在后台运行?代码需要5-6个小时才能运行,所以最好知道我还有多长时间

import xlwings as xw

def run_mac(file_path):
    
    try:
        xl = xw.App(visible=True, add_book=False)
        wb = xl_app.books.open(file_path)

        run_macro = wb.app.macro('lookupLoop.Open_Report')
        run_macro()

        wb.save()
        wb.close()

        xl.quit()

    except Exception as ex:
        template = "An exception of type {0} occurred. Arguments:\n{1!r}"
        error = template.format(type(ex).__name__, ex.args)
        print(error)


run_mac(input('Excel path: '))
这是我为文件传输准备的:


我对宏知之甚少,但基于您之前的一个问题,我实现了一个进度条,以提供有关传输了什么文件的信息

import os
import shutil
import time
import datetime
import tqdm

src = "C:/Users/eldri/OneDrive/Desktop/"
dst = "C:/Users/eldri/OneDrive/Desktop/output"
ext = input("[+] File format: ")  # "txt"
start = input("[+] Date start: ")  # "01/07/2020"
end = input("[+] Date end: ")  # "30/07/2020"


def dateRange(createdDate, startDate, endDate):
    """determines if date is in range"""
    createdDate = datetime.datetime.strptime(createdDate, '%a %b %d %H:%M:%S %Y')
    startDate = datetime.datetime.strptime(startDate, '%d/%m/%Y')
    endDate = datetime. datetime.strptime(endDate, '%d/%m/%Y')
    return startDate < createdDate < endDate


files = os.listdir(src)
numFiles = len(files)
pbar = tqdm.tqdm()
for filename, i in zip(files, tqdm.trange(numFiles-1)):
    print(filename)
    created = time.ctime(os.path.getmtime(src + filename))
    if filename.endswith('.' + ext) and dateRange(created, start, end):
        shutil.copy(src + filename, dst)
        msg = "[+] File transferred " + filename + created
    else:
        msg = "[+] File not transferred " + filename + created
    pbar.set_postfix_str(msg)

print("[+] Transfer complete")
导入操作系统
进口舒蒂尔
导入时间
导入日期时间
导入TQM
src=“C:/Users/eldri/OneDrive/Desktop/”
dst=“C:/Users/eldri/OneDrive/Desktop/output”
ext=输入(“[+]文件格式:”)#“txt”
开始=输入(“[+]日期开始:”)#“2020年7月1日”
结束=输入(“[+]日期结束:”)#“2020年7月30日”
定义日期范围(createdDate、startDate、endDate):
“”“确定日期是否在范围内”“”
createdDate=datetime.datetime.StrTime(createdDate,“%a%b%d%H:%M:%S%Y”)
startDate=datetime.datetime.StrTime(startDate,“%d/%m/%Y”)
endDate=datetime。datetime.strtime(结束日期,“%d/%m/%Y”)
返回startDate

进度条显示
100%|██████████| 10/10 [00:50这真是太棒了,非常感谢。我刚刚运行了代码,它工作得非常完美,我正在反向工程它以解决您所做的事情,有时我发现反向工作更容易。我可以问一下,新的条是因为它正在读取文件,然后计算时间而生成的吗?复制时间是由tdqm计算的吗?我得到了这个错误移动计算机:pbar.set\u postfix\u str(msg)AttributeError:“tqdm”对象没有属性“set\u postfix\u str”该条是为trange中的迭代生成的,计算的时间是执行一次迭代所用的时间乘以剩余的迭代次数-这可能理解此模块无论如何错误可能是由安装的tqdm模块引起的,请尝试重新安装它,否则我会在他们的git hub上问这个问题,对不起,我不能再有用了。你是说用微调器而不是进度条吗?如果是这样,请提出一个新问题。你不能同时使用微调器和进度条