[python] 从vba代码合集中提取特定宏名对应的代码

工作中在Personal.xlsb中写了很多宏程序, 最近想清理一下, 将常用的宏提取出来.

 代码合集有6000多行(屎山)

通过python提取需要的代码段

orgFilename = r"C:\Users\roy.luo\Code\1.txt"
rstFolder = "C:\\Users\\roy.luo\\Code\Split\\"


def rdTxCnts(fullpath):
    cntFile = open(fullpath,'r',encoding="ANSI")
    cnts = cntFile.read().splitlines()# output list start from 0 ; 	len(list) 
    print(cnts)
    return cnts

subList = rdTxCnts(fullpath = r"C:\Users\roy.luo\Code\macroname.txt")


for sub in subList:

    fi = open(orgFilename,"r",encoding="ANSI")
    rstFilename = rstFolder + sub + ".txt"
    print(rstFilename)
    fo = open(rstFilename,"w",encoding="ANSI")

    wflag =False              #写标记
    newline = []              #创建一个新的列表

    for line in fi :            #按行读入文件,此时line的type是str
        if sub in line:        #重置写标记
            wflag =True
        if wflag == True:
            K = list(line)
            if len(K)>1:           #去除文本中的空行
                for i in K :       #写入需要内容
                    newline.append(i)
        if "End Sub" in line:     #检验是否到了要写入的内容
            wflag = False
            continue

    strlist = "".join(newline)      #合并列表元素
    newlines = str(strlist)         #list转化成str

    fo.write(newlines)

    fo.close()
    fi.close()

 结果如下

总结

for line in fi: #逐行读取文本
    if keyword1 in line: #判断该行是否包含关键字
        flag = True #标记开始提取行
    if keyword2 in line: #判断该行是否包含关键字
        flag = False #标记结束提取行
    if wflag == True: #开始提取

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值