VBA 功能区栏集成
VBA Ribbon Bar Integration
我有一个 Excel 宏,它对文档(创建为表单和一些电子邮件)执行一些功能,所有这些功能都来自 MS-Word 文档。如果宏是从主电子表格(宏所在的位置)执行的,则一切正常。我想将这个宏放在功能区上,允许用户在没有(或不知道主 excel 文档位于或打开它的位置)的情况下启动它。我创建了一个子程序来检查电子表格是否打开并修改了功能区以包含宏的图标。
哪个有效。但是,当主 Excel 电子表格未打开时从功能区启动时,它会打开工作簿并完整运行宏(不执行宏的打开工作簿行)。我假设电子表格正在打开,因为被调用的宏驻留在其中(有意义)。由于宏依赖于电子表格中包含的数据,我需要允许用户对其进行修改,然后重新运行 功能区中的宏。
有没有人有推荐的方法或最佳实践?提前谢谢你。
Sub MainForm()
Dim WorkingFolder As String
Dim File01 As String 'Main Excel Data File, where all data is
Dim File02 As String 'Preliminary Email to send to user
Dim File03 As String 'Final Email to Send to user when production is complete
Dim wb As Workbook
WorkingFolder = "C:\Temp\"
File01 = "01-MainData.xlsm"
File02 = "02-PreProductionEmail.docx"
File03 = "03-FinalProductionEmail.docx"
If wbIsOpen(File01) = True Then
MsgBox "Workbook Is Open"
Run ("'C:\Users\Guest\Nextcloud\Documents\Excel Forms-TEST-Production Request-Data.xlsm'!CreateProductionForm")
Else
MsgBox "The Main Datafile is not open, verify the last row before re-runing", vbOKOnly, "Not Open"
Set wk = Workbooks.Open(WorkingFolder & DataFile)
End If
End Sub
Ricardo 提到的指南并不是我所需要的,但它很有帮助,确实让我走上了正确的道路。再次感谢里卡多。为了让它正常工作,我需要执行以下操作。
1 - 将上面的过程制作成自己单独的 *.xlam 文件(另存为加载项)。
2 - 添加加载项以通过开发人员选项卡自动启动
3 - 将宏添加到功能区。
我已经修改了上面的示例,以包含 open 语句以及从另一个工作簿执行宏的语句。
感谢指导。
我有一个 Excel 宏,它对文档(创建为表单和一些电子邮件)执行一些功能,所有这些功能都来自 MS-Word 文档。如果宏是从主电子表格(宏所在的位置)执行的,则一切正常。我想将这个宏放在功能区上,允许用户在没有(或不知道主 excel 文档位于或打开它的位置)的情况下启动它。我创建了一个子程序来检查电子表格是否打开并修改了功能区以包含宏的图标。
哪个有效。但是,当主 Excel 电子表格未打开时从功能区启动时,它会打开工作簿并完整运行宏(不执行宏的打开工作簿行)。我假设电子表格正在打开,因为被调用的宏驻留在其中(有意义)。由于宏依赖于电子表格中包含的数据,我需要允许用户对其进行修改,然后重新运行 功能区中的宏。 有没有人有推荐的方法或最佳实践?提前谢谢你。
Sub MainForm()
Dim WorkingFolder As String
Dim File01 As String 'Main Excel Data File, where all data is
Dim File02 As String 'Preliminary Email to send to user
Dim File03 As String 'Final Email to Send to user when production is complete
Dim wb As Workbook
WorkingFolder = "C:\Temp\"
File01 = "01-MainData.xlsm"
File02 = "02-PreProductionEmail.docx"
File03 = "03-FinalProductionEmail.docx"
If wbIsOpen(File01) = True Then
MsgBox "Workbook Is Open"
Run ("'C:\Users\Guest\Nextcloud\Documents\Excel Forms-TEST-Production Request-Data.xlsm'!CreateProductionForm")
Else
MsgBox "The Main Datafile is not open, verify the last row before re-runing", vbOKOnly, "Not Open"
Set wk = Workbooks.Open(WorkingFolder & DataFile)
End If
End Sub
Ricardo 提到的指南并不是我所需要的,但它很有帮助,确实让我走上了正确的道路。再次感谢里卡多。为了让它正常工作,我需要执行以下操作。
1 - 将上面的过程制作成自己单独的 *.xlam 文件(另存为加载项)。
2 - 添加加载项以通过开发人员选项卡自动启动
3 - 将宏添加到功能区。
我已经修改了上面的示例,以包含 open 语句以及从另一个工作簿执行宏的语句。
感谢指导。