2017-09-01 62 views
1

我有一个用Vb .NET编写的项目,其中我从用户那里获取输入,打开一个Excel模板并使用主窗体的输入运行一个宏(vba)。 我可以使用模板路径完成所有这些工作,但我需要它在发布时成为项目的一部分。 这是我的路版本代码(过量代码删除):将excel工作簿添加到VB .NET应用程序

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 

我发现this post但它不工作,也许是因为我的模板文件夹中(这是位于同一位置Form1.vb的等等)。 我的模板必须与其他文件分开,以便于查找。 如果有人能提供给我一个解决方案/修改从其他岗位代码以这样一种方式,它的工作原理我会很感激

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

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

回答

0

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

代码打开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 

至于资源本身: 项目>添加现有项目>浏览>添加 然后找到Solution Explorer中的项目,打开它的属性和变化: 类型:内容 复制到输出目录:始终复制

此问题已得到解决,因此我关闭此线程

相关问题