今天帮招办处理几个Excel表格,都是一些机械的重复操作,所以考虑使用Python和VBA合作来完成自动化操作,现将操作步骤记录下来以供以后使用。
Python批量修改文件名
这个很简单,只需要以下几行代码即可
import os
for i in range(80):
filename = "xs2016-%d系-带专业代号.xlsx" % i
dstfilename = "xs2016-%d系-不带专业代号.xlsx" % i
print os.path.exists(filename)
print filename
if(os.path.exists(filename)):
print filename
os.rename(filename,dstfilename)
效果如下
VBA操作表格
第二步是需要进入Excel后删除每个表里的部分列,这里我们使用Excel自带的宏来完成。
按照
http://jingyan.baidu.com/article/90895e0fe9ee6164ec6b0b09.html
这个教程提供的录制宏的方法录制后,得到的宏如下
Sub 删除专业代号()
'
' 删除专业代号 宏
'
' 快捷键: Ctrl+b
'
Columns("AN:AY").Select
Selection.Delete Shift:=xlToLeft
End Sub
注意这里的位置为所有打开的工作簿而不是当前的工作簿。
把它的快捷键设置为Ctrl + B,然后在Python里模拟键盘输入,再使用循环即可对所有的表格执行删除操作。核心代码如下。
import os
import win32api
import win32con
import time
os.startfile("带专业代号\\xs2016-1系-带专业代号.xls")
time.sleep(5)
win32api.keybd_event(17,0,0,0) #ctrl键位码是17
win32api.keybd_event(66,0,0,0) #B键位码是66
win32api.keybd_event(66,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
通过Python模拟鼠标和键盘以及VBA即可实现诸如Office、Auto CAD等常用软件的批量处理。