Bonjour

Voila, mon appli remplit des cellules dans un classeur excel. J'utilise Delphi 4 STD.
extrait de mon code
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
procedure TFormCreatEnvoiFi.Button1Click(Sender: TObject);
var
	aMSG:String;
  FichIni:TIniFile;
  x:Integer;
  ListDest:TStrings;
  aRange:AnsiString;
begin
// Ouvrir Classeur ModèleFi.xls
	FichIni := TIniFile.Create('c:\fi\FINI.ini');
 	ASheetName:=FichIni.ReadString('Parametres', 'CHEMIN','');
  Fichini.free;
  aFileName:=aSheetName+'\modeleFi.XLS';
  try
  	vMSExcel:=GetActiveOleObject('Excel.Application');
  except
    vMSExcel:=CreateOleObject('Excel.Application');
  end;
  vXLWorkbooks:=vMSExcel.workBooks;
  vXLWorkBook:=vXLWorkBooks.open(aFilename);
  //
  FichIni := TIniFile.Create('c:\fi\FINI.ini');
  ListDest:=TStringList.Create;
  FichIni.ReadSectionValues('MonMail',ListDest);
  //  remplir cellule ds EXCEL avec Destinataire
  vWorksheet:=vXLWorkBook.WorkSheets['FeuilleFi'];
  for x:=0 to ListDest.Count-1 do
  	begin
    	aRange:='K'+IntToStr(x+1);
  		vCell:=vWorksheet.range[aRange];
      vCell.value:=Copy(ListDest[x],3,Length(ListDest[x])-1);
    end;
  FichIni.Free;
  ListDest.free;
  vXLWorkBook.save;
  TraiterFi;  // procedure pour remplir un certain nombre de cellule
  //
  aFileName:='\FI '+DateTimeToStr(now);
  aFileName:=ReplaceStr(aFilename,':','_');
  aFileName:=ReplaceStr(aFilename,'/','_');
  aFileName:=aFileName+'.xls';
  AfileName:=aSheetName+AfileName;
  vXLWorkBook.saveAs(aFileName);
  vXLWorkBook.Close(false,AfileName);
 
  vXLWorkBook:=unassigned;
  vWorksheet:=unassigned;
  vMSExcel.Quit;
  vMSEXCEL:=unassigned;
  //
end;
les variables pour excel sont déclarées avant la section implémentation.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
var
  FormCreatEnvoiFi: TFormCreatEnvoiFi;
   vMSExcel,vXLWorkBooks,vXLWorkBook,vCell,vWorkSheet:variant;
 
implementation
 
uses UnitDM, UnitRapport;
 
{$R *.DFM}
Mon application fonctionne parfaitement, seulement tant que je ne l'ai pas fermée, lorque j'essais d'ouvrir un fichier EXCEL par l'explorateur ( n'importe leque), EXCEL se lance, en affichant le nom du classeur ouvert dans la barre d'info d'en haut, mais n'affiche pas de feuille de calcul.

Je lance le gestionnaire de tache de windows, dans la partie processus j'arrête le processus EXCEL, j'essais de réouvrir un fichier excel par l'exploreur windows, et là, tout fonctionne.

Idem si je quitte mon appli, si j'ouvre un fichier EXCEL par EXCEL ou si j'ouvre un fichier EXCEL par l'explorateur (EXCEL étant deja lancée).

Donc tant que je n'ai pas fermée mon appli, j'ai toujours un processus EXCEL en cours.
Est ce que quelqu'un a déjà rencontré ce problème ?
Comment faire pour terminer ce processus ?

merci
a+