使用Excel的VBProject可以导出文件中的VBA代码,但是有的文件有宏密码保护,导出就会报错。在知道密码的前提下可以打开Excel后用代码自动填写密码,然后导出。
刚开始我尝试使用VBA去实现,但是VBA是寄生于Excel运行的,会对填写密码造成影响,于是改用VBS实现。

  1. 把VBS放在要导出的文件夹下运行,遍历该路径下所有的Excel文件,并在放置VBS的路径生成Excel文件名的文件夹,文件夹存放导出的内容。
  2. 有密码就输入密码,没有密码直接点击确定。
    代码如下:
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相关推荐

  1. EXCEL文件中的VBA模块名包含中文名导致打开失败的案例。

    2019独角兽企业重金招聘Python工程师标准>>> 问题OFFICE版本:OFFICE 365 症状:打开带有中文VBA模块的时候,会提示 如果选择"是",进 ...

  2. 查找并删除EXCEL文件中的重复行(整行重复)

    ''' 用Python写代码:查找并删除EXCEL文件中的重复行(整行重复) --GhatGPT方案 ''' #-------------------------------------------- ...

  3. python打开excel的函数-Python读取excel文件中带公式的值的实现

    在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...

  4. python公式_Python读取excel文件中带公式的值的实现

    在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...

  5. excel 外部链接 乱码_在Excel文件中查找外部链接

    excel 外部链接 乱码 Last week, I opened an Excel file, and was surprised to see a Security Warning. Appare ...

  6. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...

     本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    (三)SSIS的简介    (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...

  7. 《R数据可视化手册》一1.4 从Excel文件中加载数据

    本节书摘来自异步社区<R数据可视化手册>一书中的第1章,第1.4节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 ...

  8. c# excel导出png_批量导出Excel文件中的图片,用VBA代码其实很简单

    本次案例来自悟空问答网友提问,之前由于时间原因,回复比较简单没有给出具体实现方法,今天花时间整理写成图文,希望小伙伴们都可以学会.@沉默的生物钟 实际问题 一.数据模拟--素材准备 为了更加真实的还原 ...

  9. 使用SSIS包将多个Excel文件中的数据导入SQL Server表中

    This article explores an SSIS package for importing multiple Excel files data into SQL Server tables ...

最新文章

  1. oracle中创建触发器
  2. [转]Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
  3. 苹果数据线不能充电_外媒痛批苹果!iPhone 12不送充电器绝非为环保,理由太真实!|充电器|数据线|手机|iphone...
  4. 基于epoll+threadpool的webServer分析与实现
  5. 最新阿里内推高级Java面试题
  6. C++简易复数类的实现
  7. MySQL数据库迁移注意点
  8. idea安装插件后无法启动
  9. ubuntu 键盘输入法为空_Ubuntu12下键盘输入中文设置 - 卡饭网
  10. h5页面 请在微信客户端打开链接_完美解决 请在微信客户端打开链接
  11. 万字长文带你快速了解并上手Testcontainers
  12. JS中的单引号和双引号
  13. pythonshell窗口是什么_使用IDLE的Python shell窗口实例详解
  14. 计算机不学c语言的专业,关于高职计算机类专业学生学不好C语言的思考
  15. 简单的使用一下增强for循环
  16. ubuntu20.04没有声音如何处理
  17. 用JSP-Servlet构建三层式管理信息系统
  18. linux启动服务命令
  19. 企业集成平台 Cloud Hub 5.3版本发布 [EAI、B2BI、EDI、数据集成平台]
  20. Android AVD Manager - 安卓虚拟机的设置

热门文章

  1. 云南初中计算机学业水平要求,云南省初中信息技术学业水平考试复习合集
  2. 软件测试是什么?具体的工作内容是什么?有前途吗?
  3. 【最全资源】关于机器学习的干货借鉴
  4. App store 下载软件失败的解决办法总结
  5. DotnetBar控件中一些设置 早前整理
  6. js时间格式化工具类
  7. 【少走弯路】关于安卓抓包的个人经验
  8. openwrt使用linux内核版本,如何降级OpenWRT的Linux内核版本
  9. 如何使用笔记软件 FlowUs、Notion 进行间隔重复?基于公式模版
  10. icode编程图形化|一级训练场|基础训练1