petit probleme avec automation Excel
salut
je vous explique le probleme je crée une feuille excel via l'automation d'Excel comme indiqué dans la Faq (mais pas le composant de delphi)
et mon soucis est le suivant lorsque mon programme tourne j'ouvre l'instance a excel ensuite je la ferme et je laisse tourner mon programme je vais ouvrir le fichier que j'ai crée par excel sa fonctionne bien mais si je recommence excel plante d'une certaine facon car il n'afficher que la barre d'outils et rien d'autre même pas une feuille blanche, (cependant si je travail sur mon programme les modif sur mon fichier sont effectué malgré tout) donc je referme excel et si j'arrete mon soft excel refocntionne normalement et la je peut voir les modif etc...
je vous transmet les codes d'instance et de save et de close
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 28 29 30
|
if ConfigTest_Parametres.CptRenduExcel then
begin
vMSExcel := CreateOleObject('Excel.Application');
try
vMSExcel := GetActiveOleObject('Excel.Application');
except
vMSExcel := CreateOleObject('Excel.Application');
end;
vXLWorkBooks := vMSExcel.WorkBooks;
vXLWorkBook := vXLWorkBooks.Add;
vXLWorkSheet := vXLWorkBook.WorkSheets['Feuil1'];
vXLCell := vXLWorkSheet.Range['A1'];
vXLCell.Value := Traduction_Traduire(9160);
vXLCell := vXLWorkSheet.Range['B1'];
vXLCell.Value := Traduction_Traduire(9161);
vXLCell := vXLWorkSheet.Range['C1'];
vXLCell.Value := Traduction_Traduire(9162);
vXLCell := vXLWorkSheet.Range['D1'];
vXLCell.Value := Traduction_Traduire(9163);
vXLCell := vXLWorkSheet.Range['E1'];
vXLCell.Value := Traduction_Traduire(9164);
vXLCell := vXLWorkSheet.Range['F1'];
vXLCell.Value := Traduction_Traduire(9165);
NumLigneExcel := 2;
end; |
Code:
1 2 3 4 5 6
|
if ConfigTest_Parametres.CptRenduExcel then
begin
vXLWorkBook.SaveAs(ChangeFileExt(NomFichier,'.xls'));
vXLWorkBook.Close(False,ChangeFileExt(NomFichier,'.xls'));
end; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
if ConfigTest_Parametres.CptRenduExcel then
begin
vXLCell := vXLWorkSheet.Range['B'+IntToStr(NumLigneExcel)];
vXLCell.Value := StBon;
vXLCell := vXLWorkSheet.Range['C'+IntToStr(NumLigneExcel)];
LireNomPointUtilisateur(Pt1,Nom);
vXLCell.Value := Nom;
vXLCell := vXLWorkSheet.Range['D'+IntToStr(NumLigneExcel)];
LireNomPointUtilisateur(Pt2,Nom);
vXLCell.Value := Nom;
vXLCell := vXLWorkSheet.Range['E'+IntToStr(NumLigneExcel)];
vXLCell.Value := Res;
vXLCell := vXLWorkSheet.Range['F'+IntToStr(NumLigneExcel)];
vXLCell.Value := 'B';
Inc(NumLigneExcel);
end; |
Code:
1 2
|
vMSExcel, vXLWorkBooks, vXLWorkBook, vXLWorkSheet, vXLCell : variant; |
ps: lorsque jouvre excel la fonction close est deja effectué mais mon soft est toujours present il tourne en gros mai n'utilise plus excel
lorsque je veu reutiliser je repass par la fonction qui instancie
merci pour le code main car je sais vraiment pas quoi faire aucune idée
[/code]