在XSLX文档上使用Excelmacros

恐怕这将是一个长期的问题。

我们要求客户用一些客户数据填写excel文档。 这些数据以列(Id,Name,Phone等)分隔。 我有一个隐藏的工作表,这些列标题映射到我们在数据库中使用的字段。 出于安全原因,我不希望/不能将该文件分发为启用macros的文档。 但是,当他们发回文件时,我想在这个文件上执行一个macros,将内容保存为一个CSV文件,因此这个文件可以导入到数据库中。

我正在考虑在PERSONAL.XSLB文件中创buildmacros,以便在返回的XSLX文件上使用它。

这是正确的方式来处理这样的? 或者我应该使用不同的方法?

谢谢你的帮助

顺便说一句,如果已经有这个答案,我找不到它。 也许我没有使用正确的search条件。

这听起来像是一个插件的好机会 – 我在这里写了一篇文章: 如何从macros创build一个可重用的button?

这里是VBA的简短摘要:

(1)保存一个xlsmxlsb文件,使用易于增加版本的加载项的名称。

(2)将以下脚本添加到ThisWorkbook中,以确保在打开工作簿并激活工作簿时创build菜单栏:

 Private Sub Workbook_Open() Call CreateMenuBar End Sub Private Sub Workbook_Activate() Call CreateMenuBar End Sub 

(3)创build一个新模块并添加下面的代码来创build,删除和更新菜单栏:

 Option Explicit Sub CreateMenuBar() Dim MenuObject As CommandBarPopup Dim MenuItem As Object Dim SubMenuItem As Object 'clear the old menu bar Call DeleteMenuBar("&MyMenuBar") 'create the menu bar and drop down options Set MenuObject = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, _ before:=10, Temporary:=True) MenuObject.Caption = "&MyMenuBar" MenuObject.OnAction = "UpdateMenuBar" 'first level menu option Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup) MenuItem.Caption = "&First Menu Stuff" 'link to first script Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton) SubMenuItem.Caption = "&First Script" SubMenuItem.OnAction = "Script1" 'link to second script Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton) SubMenuItem.Caption = "&Second Script" SubMenuItem.OnAction = "Script2" 'first level menu option Set MenuItem = MenuObject.Controls.Add(Type:=msoControlPopup) MenuItem.Caption = "&Second Menu Stuff" 'link to third script Set SubMenuItem = MenuItem.Controls.Add(Type:=msoControlButton) SubMenuItem.Caption = "&Third Script" SubMenuItem.OnAction = "Script3" End Sub Sub DeleteMenuBar(MenuName As String) On Error Resume Next Application.CommandBars(1).Controls(MenuName).Delete On Error GoTo 0 End Sub Sub UpdateMenuBar() 'do special checks, like verifying sheets, in this routine End Sub 

(4)validation您的脚本工作并保存文件。

(5)再次保存文件作为xlamxla文件,现在你的脚本已经得到了方便!