2017-09-01 6 views
1

J'ai un projet écrit en VB .NET dans lequel je prends l'entrée de l'utilisateur, ouvre un modèle Excel et y exécute une macro (vba) avec l'entrée du formulaire principal. Je peux faire tout cela sans problème en utilisant un chemin vers le template mais j'en ai besoin pour faire partie du projet quand je le publie. Ceci est mon code de version de chemin (code excès supprimé):Ajouter un classeur excel à l'application 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 

J'ai trouvé this post mais il ne fonctionne pas, peut-être parce que mes modèles sont dans un dossier (qui est situé au même endroit que Form1.vb etc). Mes modèles doivent être séparés des autres fichiers afin qu'ils soient faciles à trouver. Si quelqu'un pouvait me fournir une solution/modifier le code d'un autre poste de telle manière que cela fonctionne, je serais très reconnaissant

J'utilise Visual Studio 2017 et Excel 2010 code de poste lié:

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

Répondre

0

J'ai réussi à trouver une solution mais j'ai rencontré un autre problème: j'obtiendrais une erreur en disant que le chemin est invalide, l'objet est manquant. J'étais sûr que c'était un problème avec le chemin, mais c'était lié aux propriétés de la ressource (type: contenu au lieu de none et copier toujours donc il est dans le dossier avec l'application).

code pour ouvrir le modèle 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 

En ce qui concerne ressource elle-même: Project> Ajouter un élément existant> Parcourir> ajouter Ensuite, trouver l'élément dans l'explorateur de solution, ouvrir ses propriétés et changement: type : contenu Copie vers le répertoire de sortie: toujours copier

Le problème a été résolu si je ferme ce fil