将工作簿存储在 Xlam 中

Store a workbook in a Xlam

我需要将工作簿添加到 Xlam 文件(加载项)中。思路很简单,一个宏就是运行然后新建工作簿就是shown/open。 有人可能会建议以下代码:

Workbooks.Open "\someNetworkDrive\myworkbook.xlsx" 

不同的用户将工作簿存放在不同的路径中。所以上面的解决方案是行不通的。 (此外,用户可能没有工作簿)有谁知道将 xlsx 文件附加到 xlam 文件的方法吗?

另一种方法是将此工作簿存储在工作簿类型的 VBA 变量中,然后在宏为 运行 时 show/open 它。但我不知道如何将已创建的工作簿存储到 VBA 代码中。

有什么想法吗?

避免过于复杂的代码,只要求用户找到工作簿:

Sub SO()

Dim fileLocation   As String
Dim myWB           As Excel.Workbook

fileLocation = Application.GetOpenFileName("Excel Workbook (*.xlsx), *.xlsx")

If Not UCase(fileLocaation) = "FALSE" And Not fileLocation = vbNullString Then
    Set myWB = Workbooks.Open(fileLocation)
End If

End Sub

如果您需要单个工作簿解决方案,则需要将工作表嵌入到 xlam 中,然后创建一个新工作簿并将工作表等复制到其中。您可能只能将格式和公式等存储在 XLAM 中,然后 XLAM 中的 VBA 代码使用它们来创建新工作簿。 当您需要创建可变数量的行等时,这种方法很有效。