从带宏密码保护的Excel文件中导出VBA代码和Sheet
使用Excel的VBProject可以导出文件中的VBA代码,但是有的文件有宏密码保护,导出就会报错。在知道密码的前提下可以打开Excel后用代码自动填写密码,然后导出。
刚开始我尝试使用VBA去实现,但是VBA是寄生于Excel运行的,会对填写密码造成影响,于是改用VBS实现。
- 把VBS放在要导出的文件夹下运行,遍历该路径下所有的Excel文件,并在放置VBS的路径生成Excel文件名的文件夹,文件夹存放导出的内容。
- 有密码就输入密码,没有密码直接点击确定。
代码如下:
Dim otpth,gfolder,fso,newbk,pswd
Dim a,paswd,ws,oExcel,errTestpsw = InputBox("Input your Password","Password")If Trim(psw) <> "" Or Not IsEmpty(psw)Thenpswd = Trim(psw)Call vbaexp()
End IfSub vbaexp()Set fso = CreateObject("scripting.filesystemobject")Set ws = CreateObject("wscript.shell")Set oExcel = CreateObject( "Excel.Application" )oExcel.visible = Trueotpth = ws.CurrentDirectoryepath = otpthmkexp (epath)oExcel.quitIf Err.Number = 0 Then MsgBox ("success !!")
End SubFunction mkexp(epath)Set gfolder = fso.getfolder(epath)For Each subgfo In gfolder.subfoldersmkexp (subgfo.Path)NextFor Each sfil In gfolder.Filessfinm = Trim(sfil.Name)If InStr(sfinm, ".") > 0 And Mid(sfinm,1,2) <> "~$"Thenubsp = UBound(Split(sfinm, "."))houz = Trim(Split(sfinm, ".")(ubsp))houzhui = UCase(houz)If houzhui = "XLS" Or houzhui = "XLSX" Or houzhui = "XLSM" ThenoExcel.Workbooks.Open sfilSet newbk = oExcel.Workbooks(sfil.Name)If pswd <> "" ThenIf newbk.VBProject.Protection = 1 Thennewbk.Activatews.SendKeys "%{F11}"ws.SendKeys "%T"ws.SendKeys "E"ws.SendKeys pswdws.SendKeys "{ENTER}"wscript.sleep 1000ws.SendKeys "%{F4}"ws.SendKeys "%{F4}"End IfEnd IfOn Error Resume NextSet errTest = newbk.VBProject.VBComponentsIf Err.Number <> 0 Thennewbk.Close FalseMsgBox(sfinm & " invalid password !!")Elsenewfol = otpth & "\" & Replace(sfinm, "." & houz, "")If Not fso.folderexists(newfol) Thenfso.createfolder (newfol)End IfFor Each vbpj In newbk.VBProject.VBComponentsexpfinm = ""Select Case vbpj.TypeCase 1 'vbext_ct_StdModule case 1expfinm = vbpj.Name & ".bas"Case 2 'vbext_ct_ClassModule case 2expfinm = vbpj.Name & ".cls"Case 3 'vbext_ct_MSForm case 3expfinm = vbpj.Name & ".frm"Case 100 'vbext_ct_Document case 100If vbpj.Name <> "ThisWorkbook" ThenFor Each sht In newbk.WorksheetsIf sht.CodeName = vbpj.Name Thenexpfinm = sht.Name & ".txt"End IfNextElseexpfinm = vbpj.Name & ".txt"End IfEnd Selectnewbk.VBProject.VBComponents(vbpj).Export newfol & "\" & expfinmNextErr.Clearnewbk.Close FalseEnd IfEnd IfEnd IfNext
End Function
从带宏密码保护的Excel文件中导出VBA代码和Sheet相关推荐
- EXCEL文件中的VBA模块名包含中文名导致打开失败的案例。
2019独角兽企业重金招聘Python工程师标准>>> 问题OFFICE版本:OFFICE 365 症状:打开带有中文VBA模块的时候,会提示 如果选择"是",进 ...
- 查找并删除EXCEL文件中的重复行(整行重复)
''' 用Python写代码:查找并删除EXCEL文件中的重复行(整行重复) --GhatGPT方案 ''' #-------------------------------------------- ...
- python打开excel的函数-Python读取excel文件中带公式的值的实现
在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...
- python公式_Python读取excel文件中带公式的值的实现
在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...
- excel 外部链接 乱码_在Excel文件中查找外部链接
excel 外部链接 乱码 Last week, I opened an Excel file, and was surprised to see a Security Warning. Appare ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 (三)SSIS的简介 (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...
- 《R数据可视化手册》一1.4 从Excel文件中加载数据
本节书摘来自异步社区<R数据可视化手册>一书中的第1章,第1.4节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 ...
- c# excel导出png_批量导出Excel文件中的图片,用VBA代码其实很简单
本次案例来自悟空问答网友提问,之前由于时间原因,回复比较简单没有给出具体实现方法,今天花时间整理写成图文,希望小伙伴们都可以学会.@沉默的生物钟 实际问题 一.数据模拟--素材准备 为了更加真实的还原 ...
- 使用SSIS包将多个Excel文件中的数据导入SQL Server表中
This article explores an SSIS package for importing multiple Excel files data into SQL Server tables ...
最新文章
- oracle中创建触发器
- [转]Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
- 苹果数据线不能充电_外媒痛批苹果!iPhone 12不送充电器绝非为环保,理由太真实!|充电器|数据线|手机|iphone...
- 基于epoll+threadpool的webServer分析与实现
- 最新阿里内推高级Java面试题
- C++简易复数类的实现
- MySQL数据库迁移注意点
- idea安装插件后无法启动
- ubuntu 键盘输入法为空_Ubuntu12下键盘输入中文设置 - 卡饭网
- h5页面 请在微信客户端打开链接_完美解决 请在微信客户端打开链接
- 万字长文带你快速了解并上手Testcontainers
- JS中的单引号和双引号
- pythonshell窗口是什么_使用IDLE的Python shell窗口实例详解
- 计算机不学c语言的专业,关于高职计算机类专业学生学不好C语言的思考
- 简单的使用一下增强for循环
- ubuntu20.04没有声音如何处理
- 用JSP-Servlet构建三层式管理信息系统
- linux启动服务命令
- 企业集成平台 Cloud Hub 5.3版本发布 [EAI、B2BI、EDI、数据集成平台]
- Android AVD Manager - 安卓虚拟机的设置