其他
VBA、Python批量删除审定明细表外的其他工作表
今天某个项目做后期的同事问我拿审计底稿的Excel版审定表,明细表,或者有时候评估机构也会问我们审计师拿相关会计科目的审定表、明细表,这时候我们通常会手工一个个打开Excel底稿并删除不相关工作表,科目多的话会比较繁琐。思源君经过一番试验,分别用Vba、Python实现了这个功能,假设你的审计Excel底稿中,审定表、明细表分别为第1、第2张Sheet,其他底稿从第3张Sheet开始
Vba代码如下(假设test.xlsm为VBA代码所在表格):
Sub 批量删除指定工作表()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim pathn$
pathn = ThisWorkbook.Path
f = Dir(pathn & "\")
Do While f <> ""
If f <> "test.xlsm" Then
Workbooks.Open (pathn & "\" & f)
If Worksheets.Count >= 3 Then
For i = Worksheets.Count To 3 Step -1
Worksheets(i).Delete
Next
End If
ActiveWorkbook.Close True
End If
f = Dir()
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Python代码如下:
import os
import xlwings as xw
file_path=r'底稿' #给出文件所在的路径文件夹名
file_list=os.listdir(file_path) #列出路径下所有文件和文件夹的名称
app=xw.App(visible=False)
for i in file_list:
old_file_path=os.path.join(file_path,i)
workbook=app.books.open(old_file_path)
worksheets=workbook.sheets
b=[] #声明一个空的列表存放工作表名称
for sheet in worksheets:
b.append(sheet.name)
for j in range(len(worksheets)): #range从0开始计数
target_name=str(b[j])
if j>1:
worksheets[target_name].delete() #一开始想通过数字序号来实现删除特定工作表功能,发现一直报错,改用工作表名称来进行定位删除
else:
continue
workbook.save() #保存工作薄
app.quit() #退出程序
感谢您阅读“思源审计”,如有点滴收获,请点击下方链接关注