Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将工作簿存储在Xlam中_Excel_Vba_Add In - Fatal编程技术网

Excel 将工作簿存储在Xlam中

Excel 将工作簿存储在Xlam中,excel,vba,add-in,Excel,Vba,Add In,我需要将一个工作簿添加到Xlam文件(外接程序)中。想法很简单,先运行一个宏,然后显示/打开新工作簿。 人们可以建议使用以下代码: Workbooks.Open "\\someNetworkDrive\myworkbook.xlsx" 不同的用户将工作簿存储在不同的路径中。因此,上述解决方案不起作用。(此外,用户可能没有工作簿)有人知道如何将xlsx文件附加到xlam文件吗 另一种方法是将此工作簿存储在工作簿类型的VBA变量中,然后在运行宏时显示/打开它。但我不知道如何将已创建的工作簿存储到

我需要将一个工作簿添加到Xlam文件(外接程序)中。想法很简单,先运行一个宏,然后显示/打开新工作簿。 人们可以建议使用以下代码:

Workbooks.Open "\\someNetworkDrive\myworkbook.xlsx" 
不同的用户将工作簿存储在不同的路径中。因此,上述解决方案不起作用。(此外,用户可能没有工作簿)有人知道如何将xlsx文件附加到xlam文件吗

另一种方法是将此工作簿存储在工作簿类型的VBA变量中,然后在运行宏时显示/打开它。但我不知道如何将已创建的工作簿存储到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代码使用它们创建新工作簿。
当您要创建的行数可变时,这种方法很有效。

您不能将工作簿存储在工作簿中-最好的办法是让用户使用文件对话框选择工作簿确定,在xlam中创建工作表并在宏运行时显示工作表,可以吗?默认情况下会隐藏外接程序,但是,您可以将外接程序中的工作表复制/创建到活动工作簿中,使其显示出来。如果您想将数据存储回外接程序,则没有什么好处,但无论如何,这不是外接程序的真正意义。我知道它可以工作,但我正在寻找单个文件解决方案。我可以将现有文件的代码与xlam文件合并,但仍然需要创建一个新的工作表来运行合并的代码。有没有办法将工作表添加到Xlam文件中?外接程序的设计目的不是用作工作簿,它的目的是扩展Excel的属性和功能,因此在我个人看来,我认为您处理问题的方式是错误的。你为什么不发布你正在尝试使用的代码,因为可能有另一种不用创建工作表的方法来使用它。代码太长了。共有5个模块。但基本上,它用用户请求的数据填充一些工作表,并生成一些图形。因此,有必要创建一个新工作簿,以便用户可以处理请求的数据并将其保存到计算机中。那么,我不明白为什么上面提供的解决方案不起作用?您可以使用现有外接程序,仅使用对象变量引用打开的工作簿。用户尚未准备好。他们可能会更改文件位置,其想法是将所有服务集成到单个xlam文件中。毕竟,这是我老板的要求。作为一名商科毕业生,我真的不知道编程的最佳方法,但我可能会问他。谢谢