dans ton première exemple,VBA, tu fais référence à un objet vb excel. ce qui est conforme
MsgBox Range("MyTable[#ALL]").Address
dans le deuxième tu fais une nouvelle instance d'excel sauf que tu utilise Application qui est ambiguë entre C# Application et Excel Application.
de plus cette nouvelle instance ne pointe pas vers ton application Excel mais une autre instance n'ayant pas de fichier ouvert!
il faut soit pointer sur une session ouverte soit ouvrir ton fichier. si ton fichier est ouvert il faut récupérer la session comme dans C# il n'existe pas de méthode GetObect nous devons la créer
Microsoft.Office.Interop.Excel.Application Excel = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
comme nous utilisons la méthode Marshal.GetActiveObject nous la définirons dans les déclarations.
using System.Runtime.InteropServices;
autre possibilité
1 2
| using ExcelAplication=Microsoft.Office.Interop.Excel;
ExcelAplication.Application Excel = (ExcelAplication.Application)Marshal.GetActiveObject("Excel.Application"); |
Partager