Bonjour à tous,
je souhaiterai avoir un peu de conseils sur un bout de code sur lequel je butte
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 :
Quel code dois-je utiliser pour faire le lien xlapp = Mon application ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !"); }
Merci d'avance pour vos lumières
Partager