Pointer sur le bon process Excel.Exe
Bonjour à tous,
je souhaiterai avoir un peu de conseils sur un bout de code sur lequel je butte :calim2:
Je souhaite à partir d'un nom de classeur (test.xls) pouvoir rattacher l'application Excel sur laquelle le classeur est ouvert (je suis dans un cas de figure avec plusieurs Excel.Exe tournant simultanément sur le poste).
Au niveau de l'algorithme, c'est bon j'arrive à cela :
Pour tous les process
>Si le Process.Nom = Excel.Exe alors
>>Rattacher mon xlApp sur le process à partir de son ID
>>Parcourir tous les classeurs ouverts
>>détecter si le nom du classeur correspond
Bref, côté code, il me manque mon étape de rattachement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlapp;
//Microsoft.Office.Interop.Excel.Workbook xlwbk;
Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist)
{
if (theprocess.ProcessName.IndexOf("EXCEL") >= 0)
{
//ici
//xlapp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject(theprocess.Id) ;
foreach(Microsoft.Office.Interop.Excel.Workbook xlwbk in xlapp.Workbooks)
{
if (xlwbk.Name.IndexOf(this.textBox1.Text) > 0)
{
MessageBox.Show("Trouvé!");
}
}
MessageBox.Show("Process: " + theprocess.ProcessName + "ID: " + theprocess.Id);
}
}
MessageBox.Show("Fini !");
} |
Quel code dois-je utiliser pour faire le lien xlapp = Mon application ?
Merci d'avance pour vos lumières :mrgreen: