Bonjour à toutes et à tous,
Je réalise un projet sous Borland c++ Builder 6 dans lequel je pilote EXCEL avec les commandes OLE.
J'ai 2 soucis.
1er PB :
Je n'arrive pas à encadrer un groupe de cellules, à chaque fois, j'ai un message d'erreur de la classe EOleSysError. Tout ce que je veux, c'est encadrer toutes les cellules de A2 à D8.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Variant vRange, vBorders,vCell101, vCell102, vValue,vWsRange, vLineStyle, vLineWeight ; vLineStyle="xlContinuous"; vLineWeight="xlThick"; vCell101="A2"; vCell102="D8"; vWsRange="A2:D8"; vRange =vWorksheet.OlePropertyGet("Range", vWsRange); vRange.OleFunction("BorderAround", vLineStyle, vLineWeight);
2eme PB :
A la fin de la séquence, j'ai une boucle qui passe à 2 pour lancer la fermeture d'EXCEL et lancer une nouvelle feuille.
ça fonctionne très bien, sauf que EXCEL ne se ferme pas vraiment. Quand je lance le gestionnaire de tâche, au bout d'un certain temps, j'ai de nombreuses occurences EXCEL.EXE. J'aimerais m'en débarasser à chaque fermeture du programme. J'ai essayé de tuer la tache avec ceci :
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 HWND hWnd; DWORD processId; HANDLE hProcess; do { hWnd = FindWindow(NULL,"EXCEL.EXE"); if (hWnd){ GetWindowThreadProcessId(hWnd,&processId); hProcess = OpenProcess(PROCESS_TERMINATE,false,processId); if (hProcess){ TerminateProcess(hProcess,0); CloseHandle(hProcess); } } } while(hWnd);
Sinon, mon programme ressemble à ceci :
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 if (boucle==2){ Word annee, mois, jour; TDate date; date = Date(); DecodeDate(date, annee, mois, jour); vChemin = "C:\\ils\\"; extension = "xls"; if(SelectionChaine->Text=="GLIDE"){ baie = "GLIDE"; } else baie = "LOCALIZER"; NomFichier=vChemin+baie+"."+annee+"."+mois+"."+jour+"."+extension; vFileName=StringToOleStr(NomFichier); vWorksheet.OleProcedure("saveas",vFileName); vMSExcel.OleFunction("Quit"); vMSExcel = Variant::CreateObject("Excel.Application"); vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks"); vXLWorkbook = vXLWorkbooks.OleFunction("Add"); boucle=0; }
Merci pour le coups de main, je galère là dessus depuis plusieurs jours.
PS : Soyez indulgent SVP car je n'ai pas la prétention de savoir coder, je n'en ai pas fait depuis 10 ans.
Partager