2017-09-01 7 views
1

私は、ユーザーから入力を受け取り、Excelテンプレートを開き、メインフォームからの入力を使ってマクロを実行します(VB.NETで書かれたプロジェクトがあります)。 テンプレートへのパスを使用しても問題なくこれを行うことができますが、公開するときにはプロジェクトの一部である必要があります。 これは私のパスのバージョンコード(過剰コード削除)です:VB .NETアプリケーションにExcelブックを追加する

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のと同じ場所に配置されているフォルダ(であるかもしれないので、私はthis postを発見したが、それは動作しません。等)。 私のテンプレートは他のファイルとは別にして、見つけやすいものでなければなりません。 誰もが解決策を私に提供することができれば/それは私がリンクされ、ポストからのVisual Studio 2017やExcel 2010 コードを使用してい

本当に感謝するでしょう働くように他のポストからのコードを変更します。

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

答えて

0

解決策を見つけることができましたが、別の問題が発生しました。パスが無効であり、オブジェクトが見つからないというエラーが表示されます。私はそれがパスの問題だと確信していましたが、それはリソースのプロパティ(type:noneの代わりにcontentをタイプし、常にアプリケーションのフォルダにあるのでコピーします)に関連していました。リソース自体については

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 

: プロジェクト>既存のアイテムを追加]> [参照]>、ソリューションエクスプローラでアイテムを見つけるその後 を追加し、それは性質および変更のOpen: タイプをExcelテンプレートを開くため

コード:コンテンツ 出力ディレクトリにコピー:コピー常に

問題を修正したので、このスレッドを閉じる

関連する問題