VBA功能条集成

VBA功能条集成,vba,ribbon,Vba,Ribbon,我有一个Excel宏,它可以对来自MS Word文档的文档(创建为表单和一些电子邮件)执行一些功能。如果从主电子表格(宏所在的位置)执行宏,则一切正常。我想将此宏放置在功能区上,使用户无需(或不知道主excel文档的位置或打开它)即可启动它。我创建了一个子系统来检查电子表格是否打开,并修改了功能区以包含宏的图标 这很有效。但是,当主Excel电子表格未打开时从功能区启动时,它会打开工作簿并整体运行宏(不执行宏的“打开工作簿”行)。我假设电子表格是打开的,因为被调用的宏与它共存(有意义)。由于宏依

我有一个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\02-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

里卡多提到的指南并不完全是我需要的,但它很有帮助,确实让我走上了正确的道路。再次感谢你,里卡多。为了让它工作,我需要做以下几点

1-将过程置于其单独的*.xlam文件(另存为外接程序)之上

2-添加外接程序以通过“开发人员”选项卡自动启动

3-将宏添加到功能区

我修改了上面的示例,将open语句与从另一个工作簿执行宏的语句一起包含在内


感谢您的指导。

这应该让您开始学习,里卡多,太棒了!谢谢你的指导。非常感谢。