首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏完美Excel

    VBA代码:强制用户将工作簿保存为.xlsm文件

    标签:VBA,工作簿事件 使用下面的代码,可以强迫用户在保存Excel工作簿时将其保存为.xlsm文件。 SaveAsUI = True Then strWorkbookName = Application.GetSaveAsFilename( _ fileFilter:="Excel启用宏工作簿(*.xlsm ", , 1))) Case "xlsm": FileFormatValue = 52 End Select ActiveWorkbook.SaveAs strWorkbookName Application.EnableEvents = True End Sub 这样,在保存Excel工作簿时,在“另存为”对话框的“保存类型”下拉列表中,只有一个选项即“Excel启用宏工作簿(*.xlsm )”,如下图1所示,从而让用户只能将工作簿保存为.xlsm文件。

    1.2K10编辑于 2024-02-29
  • 来自专栏数据处理与编程实践

    Win10:右键新建选项中添加启用宏的工作簿.xlsm

    文章背景:工作生活中涉及到VBA,时常要将Excel文件保存为.xlsm格式。而在右键新建的可选项中,一般只有.xlsx文件。下面介绍如何在右键新建选项中添加启用宏的工作簿.xlsm。 (2) 在注册表编辑器界面,找到.xlsm所在位置。 路径:计算机\HKEY_CLASSES_ROOT.xlsm (3)在.xlsm文件夹上点击右键,依次选择新建、项,并重命名为:shellnew。 (6)回到.xlsm文件夹,点击新建的shellnew文件夹,双击FileName打开,将刚才复制的内容填到数值数据中,并将最后的ecxel12.xlsx 改为 excel14m.xlsm。 参考资料: [1] 如何在右键中添加“新建启用宏的工作簿.xlsm”(https://jingyan.baidu.com/article/066074d62dca1cc3c21cb099.html)

    5K10编辑于 2022-09-20
  • 来自专栏数据处理与编程实践

    VBA: 使用递归法将xls文件批量转化为xlsm文件

    相比于xlsm文件,采用xls格式存在一些不足之处:一是保存同样的内容,xls文件占用空间相对更大;二是xls文件能支持的单元格格式个数是4,000;而xlsm文件能支持的单元格格式个数是64,000。 因此,有必要将xls文件另存为xlsm文件。 由于文件夹内有二三十份xls文件,如果一个个打开xls文件,另存为xlsm格式,这样操作起来比较费时费力。 LookUpAllFiles outFld '递归法,调用自身 Next End Sub Sub ConvertFile(filepath As String) '将xls文件转化为xlsm Private Sub UserForm_Initialize() '窗口初始化 TextBox1.Text = "E:\报告模板" End Sub 注意:上述代码将xls文件转化为xlsm

    2.2K20编辑于 2022-09-20
  • 来自专栏Excel催化剂

    再次挑战使用xlsm宏文件的方式安装插件,突破IT权限封锁,可EasyShu保底成功安装版本

    今天在群里找到几位在公司电脑受强监管,不能轻易安装软件的群友来作测试,尝试使用一个xlsm文件的方式,使用VBA的方式实现将嵌入在xlsm文件里的安装包(已经打包成一个zip文件),释放出来后,再进行解压至指定位置的方式完成安装操作 不能直接嵌入的方式,用一个压缩包,让用户主动去解压,然后再运行xlsm文件,可能更合理些,若EasyShu因为公司管控不能安装的朋友们,如果急切需要的话,可以留言让笔者知道急迫性,会再增加一些开发探索的时间来攻克它

    41010编辑于 2024-03-12
  • 来自专栏完美Excel

    Excel应用实践14:合并多个工作簿中的数据—示例3

    本例中,要合并的工作簿放置在同一文件夹中,为方便描述,这些工作簿名称和其要合并的数据工作表如下(假设要合并的工作簿有3个): “工作簿1.xlsm”中的工作表“完美Excel” “工作簿2.xlsm”中的工作表 “excelperfect” “工作簿3.xlsm”中的工作表“微信公众号” 这些工作表都有相同的列标题,但是数据行数不同。 要求: 1.将这些工作簿中的工作表合并到名为“合并.xlsm”工作簿的工作表“数据”中。 2.在“合并.xlsm”工作簿工作表“数据”的列F中,放置对应行数据来源工作簿工作表名,例如如果数据行2中的数据来自工作表“完美Excel”,则在该行列F单元格中输入“完美Excel”。 3.要合并的工作簿工作表,例如工作簿1.xlsm中的“完美Excel”数据发生变化后,在“合并.xlsm”工作表中运行代码后,会清除“数据”工作表中原先的数据并重新合并上述工作簿中的工作表数据。

    2.5K40发布于 2019-07-19
  • 来自专栏完美Excel

    在加载宏及其源文件之间切换

    标签:VBA,加载宏 在“.xlsm”文件及其转换为的加载项文件“.xlam”之间来回切换并不是一件很容易的事。 下面是www.wimgielis.com中提供的一个示例,在Personal.xlsb(个人宏工作簿)中,还添加了五个过程在xlsm版本(主要用于开发)和xlam版本(主要用来测试和使用)之间切换: Addin_SAVE_AS :将xlsm保存为xlam,不再打开xlsm版本 Addin_INSTALLED:安装xlam版本,不再打开xlsm版本 Addin_NO_Addin:卸载xlam版本,xlsm版本也不再打开 Addin_UNINSTALLED :卸载xlam版本,将打开xlsm版本 Addin_TOGGLE_VISIILITY:使xlam版本可见或不可见 可以在原网站搜索并下载示例代码工作簿。 下面是4个程序代码: Const Addin_FileName As String = "Menu_Test.xlsm" ' 在文件及其加载项对应文件之间切换的过程 Sub Addin__SAVE_AS

    1K10编辑于 2024-04-26
  • 来自专栏Excel催化剂

    『JSA宏神助攻之三』将JSA宏另存为xlam以加载项方式供外部程序无感调用和手撸大法生成带JSA宏的xlam文件

    『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好的方式是保存到xlam文件里,用户更无感它的存在。 在RPA方案里,这个就简单,直接做好一个xlsm模板文件存放到资源文件里,这个xlsm模板文件预先已经存储了JSA宏代码,从那里复制一个文件再加工就可以了。 一开始笔者想到的方案是将当前工作薄另存为xlsm(如果当前工作薄不是xlsm文件时),然后打开压缩包,在里面修改JSA宏的文件。 经过多翻测试,直接另存为xlsm,因为没有打开宏编辑器添加过代码,所以不会出现这个文件。 经过以上三步操作,重新将解压后的xlsx文件进行zip压缩后,改后缀名为xlsm,使用WPS表格打开后,即可将JSA宏代码加载进文件中并可使用。 如果还想在工作表上,将形状绑定这个JSA宏代码呢?

    73410编辑于 2024-06-27
  • 来自专栏完美Excel

    啰哩啰嗦地讲透VBA中引用单元格区域的18个有用方法--Cell属性和Offset属性

    例如,如果要引用Book1.xlsm的Sheet1中的单元格A1,完全限定引用与上一节所示的基本语法非常相似: Application.Workbooks(“Book1.xlsm”).Worksheets 下面的屏幕截图让你更好了解数字编号分配的过程: 例如,如果想使用该语法引用单元格A2,则合适的引用是: Cells(16385) 对工作簿Book.xlsm的工作表Sheet1中单元格A2的完全限定引用是 例如,下面的语句返回Book1.xlsm的工作表Sheet1中的所有单元格: Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Cells 下面的示例语句返回Book1.xlsm的工作表Sheet1中单元格A1: Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range(" ("Book1.xlsm").Worksheets("Sheet1").Range("A1:D10").Cells(8,2) 或: Application.Workbooks("Book1.xlsm")

    6.8K40编辑于 2022-01-07
  • 来自专栏完美Excel

    啰哩啰嗦地讲透VBA中引用单元格区域的18个有用方法--Range属性

    假设想要处理工作簿“Book1.xlsm”中名为“Sheet1”的工作表,两种方法的引用如下: 1.使用对象名称: Application.Workbooks(“Book1.xlsm”).Worksheets 对于Book1.xlsm中工作表Sheet1的单元格A1,完整限定的引用是: Application.Workbooks(“Book1.xlsm”).Worksheets(“Sheet1”). (“Book1.xlsm”).Worksheets(“Sheet1”). 或者,如果对Book1.xlsm的Sheet1使用完全限定的引用,语法如下: Application.Workbooks("Book1.xlsm").Worksheets("Sheet1"). 可以创建使用方括号的引用如下: [B1:B10 A5:C5] 对Book1.xlsm的Sheet1使用完全限定的引用如下: Application.Workbooks("Book1.xlsm").Worksheets

    8.6K20编辑于 2022-01-07
  • 来自专栏python12

    Excel+Python,简直法力无边

    xlwings会帮助你创建.xlsm和.py两个文件,在.py文件里写python代码,在.xlsm文件里点击执行,就完成了excel与python的交互。 怎么创建这两个文件呢? 创建好后,在指定文件夹里会出现两个文件,就是之前说的.xlsm和.py文件。 我们打开.xlsm文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。 vbTextCompare) - 1)) RunPython "import " & mymodule & ";" & mymodule & ".main()"End Sub 里面这串代码主要执行两个步骤: 1、在.xlsm if __name__ == "__main__": xw.Book("PythonExcelTest.xlsm").set_mock_caller() main() 然后在.xlsm文件 if __name__ == "__main__": xw.Book("PythonExcelTest.xlsm").set_mock_caller() main() 好了,这就是在excel

    5.6K50编辑于 2021-12-21
  • 来自专栏完美Excel

    从Python中运行Excel VBA

    win32com.client.Dispatch("Excel.Application") #实例化Excel应用程序 wb =xl.Workbooks.Open(r'D:\test\pythonrunvba.xlsm ') xl.Application.Run('pythonrunvba.xlsm! xl.Application.Quit() 为了调用VBA宏,使用了xl.Application.Run()方法,其中的参数指示要运行的宏: xl.Application.Run('pythonrunvba.xlsm 模块1.mymacro("完美Excel")') 其中: 1.pythonrunvba.xlsm!:包含VBA的文件,这里不需要包括完整路径。 2.模块1:包含宏的模块名。 如果VBA宏不接受任何参数,只需包括宏名而无须括号,例如: xl.Application.Run('pythonrunvba.xlsm!

    7.4K20编辑于 2022-04-13
  • 来自专栏FreeBuf

    如何使用XLMMacroDeobfuscator对XLM宏进行提取和反混淆处理

    当前版本的XLMMacroDeobfuscator支持xls、xlsm和xlsb格式。 该工具使用了xlrd2、pyxlsb2和其自带的解析器来相应地从xls、xlsb和xlsm文件中提取单元数据以及其他信息。 你可以在xlm-macro-lark.template查看XLM语法。 XLMMacroDeobfuscator可以在任意操作系统上运行,并正常来相应地从xls、xlsb和xlsm文件中提取和解析XLM宏文件,而无需安装Microsoft Excel。 仅获取反混淆处理后的宏而不进行其他格式化处理: xlmdeobfuscator --file document.xlsm --no-indent --output-formula-format "[[ INT-FORMULA]]" 以JSON格式导出输出数据: xlmdeobfuscator --file document.xlsm --export-json result.json 如需查看JSON

    2.2K10发布于 2021-10-11
  • 来自专栏VBA 学习

    代码保存

    从2007版本开始,Excel一般的文件后缀由原来的.xls修改为.xlsx,而对于有VBA代码的文件,需要保存为.xlsm类型,所以,在碰到的上图提示,需要点击否,选择保存类型: ? 这样相当于另存了一个.xlsm后缀的文件,文件的图标和一般的也是不一样的: ? 右下角多了一个感叹号! 所以,如果你知道自己需要在文件中使用VBA代码,记得一定要另存为.xlsm后缀的文件。

    1.1K30发布于 2020-07-28
  • 来自专栏Excel催化剂

    『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏原创续篇

    『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好的方式是保存到xlam文件里,用户更无感它的存在。 在RPA方案里,这个就简单,直接做好一个xlsm模板文件存放到资源文件里,这个xlsm模板文件预先已经存储了JSA宏代码,从那里复制一个文件再加工就可以了。 一开始笔者想到的方案是将当前工作薄另存为xlsm(如果当前工作薄不是xlsm文件时),然后打开压缩包,在里面修改JSA宏的文件。 经过多翻测试,直接另存为xlsm,因为没有打开宏编辑器添加过代码,所以不会出现这个文件。 经过以上三步操作,重新将解压后的xlsx文件进行zip压缩后,改后缀名为xlsm,使用WPS表格打开后,即可将JSA宏代码加载进文件中并可使用。 如果还想在工作表上,将形状绑定这个JSA宏代码呢?

    1.2K10编辑于 2024-06-27
  • 来自专栏Excel和Access学习笔记

    Workbook工作簿对象基础

    Workbooks(“工作簿完整名称”) 工作簿对象workbook对象的名称,即excel文件的名称都是不重复的,引用时需要工作簿的完整名称,包括文件后缀名(要注意后缀的不同,带有宏的excel文件为xlsm Workbooks("vba.xlsm").Worksheets.Count表示统计vba.xlsm工作簿对象的普通工作表的数量,在引用工作簿对象时,表示方法为:Workbooks("vba.xlsm" 当前代码所在的工作簿的名称为vba.xlsm。 ---- 今天下雨 本节主要介绍了工作簿对象的引用方法。内容之前已经有很多相似之处,后续会介绍工作簿对象常用的属性和方法。祝大家学习快乐。 ----

    3.7K30发布于 2019-10-13
  • 来自专栏Excel催化剂

    『JSA神助攻之三』将JSA宏另存为xlam以加载项方式供外部程序无感调用和手撸大法生成带JSA宏的xlam文件

    『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好的方式是保存到xlam文件里,用户更无感它的存在。 在RPA方案里,这个就简单,直接做好一个xlsm模板文件存放到资源文件里,这个xlsm模板文件预先已经存储了JSA宏代码,从那里复制一个文件再加工就可以了。 一开始笔者想到的方案是将当前工作薄另存为xlsm(如果当前工作薄不是xlsm文件时),然后打开压缩包,在里面修改JSA宏的文件。 经过多翻测试,直接另存为xlsm,因为没有打开宏编辑器添加过代码,所以不会出现这个文件。 经过以上三步操作,重新将解压后的xlsx文件进行zip压缩后,改后缀名为xlsm,使用WPS表格打开后,即可将JSA宏代码加载进文件中并可使用。 如果还想在工作表上,将形状绑定这个JSA宏代码呢?

    80410编辑于 2024-06-27
  • 来自专栏数据处理与编程实践

    VBA: Excel备份文件窗口隐藏问题:原因、修复与预防

    Dim wb As Workbook ' 选择要修复的文件 filePath = Application.GetOpenFilename("Excel Files (*.xlsm ), *.xlsm", , "选择要修复的XLSM文件") IffilePath = "False"ThenExitSub Application.ScreenUpdating True wb.Windows(1).WindowState = xlNormal ' 保存修复后的文件 tempPath = Replace(filePath, ".xlsm ", "_REPAIRED.xlsm") wb.SaveAstempPath, FileFormat:=xlOpenXMLWorkbookMacroEnabled wb.CloseFalse ("00:00:01") DoEvents ' 生成带时间戳的备份文件名 backupPath = Replace(ThisWorkbook.FullName, ".xlsm

    16010编辑于 2025-11-15
  • 来自专栏哆哆Excel

    Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中

    -“粘贴”—“关闭文件”的工作化为“一键完成” 问题1:一键复制模板文件并按D列“惟一性”命名 问题2:分别筛选出相应的数据并写入到相应文件中,如:把“初中语文1组”的相应的数据填写到“初中语文1组.xlsm ”文件中,把“小学数学1组”的相应的数据填写到“小学数学1组.xlsm”文件中, ====这是开始的两个文件======== =====代码在“控制文件.xlsm”中===== 代码如下: Sub f_num Dim arr, brr Dim d As Object f_num = 4 pa = ThisWorkbook.path mfile = pa & "\模板.xlsm End With brr = d.keys For i = 0 To UBound(brr) FileCopy mfile, topath & brr(i) & ".xlsm = crr_i + 1 End If Next j Set wb = Workbooks.Open(topath & brr(i) & ".xlsm

    1.4K30编辑于 2022-10-25
  • 来自专栏Excel和Access学习笔记

    Workbook工作簿对象方法(二)

    Workbooks("vba.xlsm").Close 是关闭了单个工作簿vba.xlsm,而workbooks.close则是关闭所有打开的工作簿。 示例保存关闭工作簿 下面以保存并关闭vba.xlsm文件为例。 Workbooks("vba.xlsm").Close savechanges:=True通过简单的代码,可以实现直接保存之后关闭excel文件。 举例如下: ThisWorkbook.Name返回示例中代码所在工作簿名称为“工作簿1.xlsm”。 而ActiveWorkbook.Name返回当前代码所在的工作簿名称为“vba.xlsm” ---- 本节主要介绍工作簿对象的常用方法,后续会介绍application对象的属性和方法,以及事件等内容等

    5.9K20发布于 2019-10-13
  • 来自专栏Python大数据分析

    如何在Excel中调用Python脚本,实现数据自动化处理

    xlwings会帮助你创建.xlsm和.py两个文件,在.py文件里写python代码,在.xlsm文件里点击执行,就完成了excel与python的交互。 怎么创建这两个文件呢? 创建好后,在指定文件夹里会出现两个文件,就是之前说的.xlsm和.py文件。 我们打开.xlsm文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。 - 1)) RunPython "import " & mymodule & ";" & mymodule & ".main()" End Sub 里面这串代码主要执行两个步骤: 1、在.xlsm if __name__ == "__main__": xw.Book("PythonExcelTest.xlsm").set_mock_caller() main() 然后在.xlsm if __name__ == "__main__": xw.Book("PythonExcelTest.xlsm").set_mock_caller() main() 好了,这就是在

    5.4K30编辑于 2022-04-03
领券