工作中在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: #开始提取