Bonjour a tous !
Je souhaiterais me lancer un peu dans la manipulation des applications Office, Excel en particulier, via Delphi.
Par exemple j'essaye de coder une appli simple qui me permettrait d'ouvrir un workbook. Le but est de pouvoir ouvrir automatiquement, et en mode silencieux, un .xla contenant une macro workbook_open qui installerait une macro complementaire dans excel une bonne fois pour toute sans que l'utilisateur est a interagir de maniere a diffuser facilement des macros complementaires sur plusieurs postes.
Deux questions : comment gerer les espaces dans les paramstr(i) ? En faite je voudrais executer mon appli en ligne de commande genre : OpenWorkBook le chemin de mon appli. OpenWorkbook etant le nom de mon appli Delphi. Il y a-t-il une solution moins cochon que de reconstruire le chemin de l'appli en concatenant tous les paramstr(i) et en rajoutant des ' ' entre chacun ?
Existe-t-il un composant generique qui en fonction de la version d'excel presente sur le systeme s'adapte a lui ? Sinon comment faire ?
Merci pour vos reponses !
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 procedure TfrmMain.FormCreate(Sender: TObject); var NomClasseur : ansistring; i : integer; vMSExcel,vXLWorkbooks : variant; begin ShowWindow(Application.Handle, SW_HIDE); If Paramcount > 1 then begin nomclasseur := ''; for i := 1 to paramcount do begin nomclasseur := nomclasseur + paramstr(i); if i < paramcount then nomclasseur := nomclasseur + ' '; end; if fileexists(nomclasseur) then begin try vMSExcel := GetActiveOleObject('Excel.Application'); except vMSExcel := CreateOleObject('Excel.Application'); end; vXLWorkbooks := vMSExcel.Workbooks; vXLWorkbooks.Open(NomClasseur); vMSExcel.Quit; vMSExcel := unassigned; end else begin showmessage(Nomclasseur + ' introuvable'); end; end; application.terminate; end;
Par contre est-ce que quelqu'un peut me confirmer que la facon dont j'ai procedé pour la gestion des espaces dans les parametres de la ligne de commande est bien la seule solution ?
Merci !
Partager