在XSLX文档上使用Excel宏
恐怕这将是一个很长的问题 我们要求客户在excel文档中填写一些客户数据。此数据以列(Id、姓名、电话等)分隔。我有一个隐藏的工作表,其中这些列标题映射到我们在数据库中使用的字段。出于安全原因,我不希望/无法将此文件作为启用宏的文档分发。但是当他们发送回文件时,我想在这个文件上执行一个宏,它将内容保存到CSV中,这样这个文件就可以导入数据库 我正在考虑在PERSONAL.XSLB文件中创建宏,以便在返回的XSLX文件中使用它 这是正确的处理方式吗?或者我应该使用不同的方法 谢谢你的帮助 [编辑]在XSLX文档上使用Excel宏,excel,xlsx,vba,Excel,Xlsx,Vba,恐怕这将是一个很长的问题 我们要求客户在excel文档中填写一些客户数据。此数据以列(Id、姓名、电话等)分隔。我有一个隐藏的工作表,其中这些列标题映射到我们在数据库中使用的字段。出于安全原因,我不希望/无法将此文件作为启用宏的文档分发。但是当他们发送回文件时,我想在这个文件上执行一个宏,它将内容保存到CSV中,这样这个文件就可以导入数据库 我正在考虑在PERSONAL.XSLB文件中创建宏,以便在返回的XSLX文件中使用它 这是正确的处理方式吗?或者我应该使用不同的方法 谢谢你的帮助 [编辑]
顺便说一句,如果已经有了答案,我找不到。可能我没有使用正确的搜索词。这听起来像是一个
加载项的好机会
——我在这里写了一篇文章:
以下是VBA的简短摘要:
(1) 保存一个xlsm
或xlsb
文件,该文件的名称很容易根据外接程序的版本递增
(2) 将以下脚本添加到此工作簿中,以确保在打开工作簿和激活工作簿时创建菜单栏:
Private Sub Workbook_Open()
Call CreateMenuBar
End Sub
Private Sub Workbook_Activate()
Call CreateMenuBar
End Sub
(3) 创建新模块并添加以下代码以创建、删除和更新菜单栏:
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) 验证脚本是否正常工作并保存文件
(5) 将文件再次保存为
xlam
或xla
文件,您现在就可以方便地使用脚本了 谢谢你,丹,我会试试的。