添加Excel工作簿到VB.NET应用程序

我有一个用Vb .NET编写的项目,其中我从用户那里获取input,打开一个Excel模板,并用主窗体中的input运行一个macros(vba)。 我可以使用模板的path完成所有这些工作,但是在发布时我需要它作为项目的一部分。 这是我的path版本代码(删除多余的代码):

Imports Excel = Microsoft.Office.Interop.Excel private sub OpenExcel() Dim objApp As Object Me.Hide() objApp = CreateObject("Excel.Application") objApp.WorkBooks.Open("ExampleWorkBook.xlsm") objApp.visible = True objApp.Run("MacroName", Var1, Var2) Me.Close() End Sub 

我发现这篇文章,但它不工作,也许是因为我的模板是在一个文件夹(它位于form1.vb等相同的位置)。 我的模板必须与其他文件分开,以便于查找。 如果任何人能够以这样的方式为我提供解决scheme/修改其他post的代码,我会非常感激

我使用链接后的Visual Studio 2017和Excel 2010代码:

 Dim filename as String = My.Application.Info.DirectoryPath & System.IO.Path.DirectorySeparatorChar & "WorkbookName.xlsx" Process.Start(filename) 

我设法find一个解决scheme,但后来遇到了另一个问题:我会得到一个错误,说path无效,对象丢失。 我确定这是一个path的问题,但它与资源属性(types:内容而不是无,并始终复制,因此它在应用程序的文件夹中)有关。

打开excel模板的代码:

 Imports Excel = Microsoft.Office.Interop.Excel private sub OpenExcel() Dim objApp As Object Me.Hide() 'This path is independent of where the program is installed as it refers to program itself Dim ResourcePath As String = My.Application.Info.DirectoryPath & System.IO.Path.DirectorySeparatorChar & "Templates\Rate_Reach_ATT finished.xlsm" objApp = CreateObject("Excel.Application") objApp.WorkBooks.Open(ResourcePath) objApp.visible = True objApp.Run("MacroName", Var1, Var2) Me.Close() End Sub 

至于资源本身:项目>添加现有项目>浏览>添加然后在解决scheme资源pipe理器中find项目,打开它的属性,并更改:types:内容复制到输出目录:复制总是

这个问题已经修复,所以我closures了这个线程