900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python win32com + VBA宏 操作Excel 清除Excel中的公式

python win32com + VBA宏 操作Excel 清除Excel中的公式

时间:2019-07-12 09:00:42

相关推荐

python win32com + VBA宏 操作Excel 清除Excel中的公式

python win32com + VBA宏 操作Excel,清除Excel中的公式

最近有个需求是自动化清楚excel中的公式,尝试了使用openpyxl读取的时候不加载公式,但这样的结果是使用了公式的数据出不来,经过测试发现可以使用win32com,win32com是物理操作的,相当于模拟人工操作,这个工具实在太好用了,还可以截图等一列神操作。

具体代码如下:

def run_vba_code(filepath):""":argfilepath : 处理的excel文件路径,要绝对路径"""# 获取当前工作目录,这个需要用相对路径# base_dir = os.path.dirname(os.path.abspath(__file__))# path = os.path.join(base_dir, filename)if os.path.exists(filepath): # 判断文件是否存在# 清除公式的vba codemacro_code = '''sub VBAMacro()Dim sh As WorksheetFor Each sh In Sheetssh.UsedRange = sh.UsedRange.ValueNextEnd Sub'''xlsx_app = win32com.client.Dispatch('Excel.Application')# Excel 文件是否可见,可测试 True 或者 False 即可xlsx_app.Visible = Truexlsx_book = xlsx_app.Workbooks.Open(filepath)# 往excel写入vba code,及运行vbaxlmodule = xlsx_book.VBProject.VBComponents.Add(1)xlmodule.CodeModule.AddFromString(macro_code)xlsx_book.Application.Run("VBAMacro")# 取消提示窗口,删除数据源sheet,xlsx_app.visible = Truexlsx_app.DisplayAlerts = Falsesheet_name_list = ['数据源01', '数据源02', '数据源03']for sheet_name in sheet_name_list:try:xlsx_book.Worksheets(sheet_name).Delete()except:print('sheet:“{}” 不存在'.format(sheet_name))time.sleep(1)"""保存、退出、关闭"""# 另存为# new_path = os.path.join(base_dir, 'xxxx-new.xlsx')# xlsx_book.SaveAs(new_path, FileFormat=51)xlsx_book.Save()xlsx_book.Close()xlsx_app.Quit()return Trueelse:print('文件不存在')return False

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。