Bonjour
Voila, mon appli remplit des cellules dans un classeur excel. J'utilise Delphi 4 STD.
extrait de mon code
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
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;
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.
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}
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+
Partager