首页 > 解决方案 > VBA 功能区栏集成

问题描述

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

标签: vbaribbon

解决方案


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

1 - 使上面的过程成为它自己单独的 *.xlam 文件(另存为加载项)。

2 - 添加加载项以通过开发人员选项卡自动启动

3 - 将宏添加到功能区。

我已经修改了上面的示例以包含 open 语句以及从另一个工作簿执行宏的语句。

感谢指导。


推荐阅读