Accueil > Manip’s > Delphi > Automation > Comment Placer un document WORD dans un Mémo ?
Comment Placer un document WORD dans un Mémo ?
lundi 24 mars 2008, par
Delphi sait implicitement gérer les formats :
- Texte brut TXT (composant Mémo)
- Et enrichi RTF (composant RicheEdit)
Mais il ne sait pas lire le format propriétaire DOC qui appartient à Microsoft
Delphi sachant parfaitement manipuler les bibliothèques Windows,
Et Windows sachant parfaitement faire communiquer ses différentes applications
- Il est possible d’accèder au contenu d’un fichier WORD
- par le biais de l’automation,
- qui prend en charge les commandes habituellement dévolues à VBA
ETAPE 1 = DÉCLARER LE COMPOSANT COM
Le Modèle de Conception des Objets (MCO dit C.O.M) est disponible dans la distribution Delphi sous le nom de :
<quote
ComOBJ
Qui doit être déclaré dans la clause USES
On en profite pour déclarer 3 variables globales COM :
- WordApplication
- WordDocument
- WordDocuments (avec un s car il s’agit de la collection de tous les docs ouverts)
Ces variables ont le type VARIANT
- qui est le type dédié aux variables COM (ex Ole)
[1]
ETAPE 2 - CONNECTER LE PROGRAMME A WORD
Si Word est ouvert :
- La connexion s’effectue par la commande :
WordApplication := GetActiveOleObject(’Word.Application’) ;
Si Word est fermé, la commande suivante l’ouvre :
WordApplication := CreateOleObject(’Word.Application’) ;
Si je veux que Word s’affiche à l’écran j’écris ensuite
WordApplication.Visible := true ;
Si je veux qu’il reste masqué en arrière plan
WordApplication.Visible := False ;
OUVERTURE DU DOCUMENT ET CONVERSION EN TEXTE
Dans cet exemple le document s’appelle
TEST.DOC
Et est placé à côté de l’exécutable.
Pour ouvrir un document la commande est
WordDocument := WordDocuments.Open( ’test.doc’ ) ;
Le Contenu textuel est recopié sous forme TEXTE BRUT
text := WordDocument.content.text ;
Les retours charriots sont remplacés par des sauts ligne
text := StringReplace(text, chr(13), chr(13)+chr(10) , [rfReplaceAll,rfIgnoreCase]) ;
Et le tout est placé dans mon Mémo.
Fermeture de Word :
- WordApplication.Quit ;
- WordApplication := unassigned ;
Nouveau Document :
- WordDocuments := WordApplication.Documents ;
- WordDocument := WordDocuments.Add ;
Fermeture du DOC en sauvant les données
- WordApplication.ActiveDocument.Close( True ) ;
Sauvegarde
- WordDocument.Save ;
Enregister Sous
- WordDocument.SaveAs(aFileName) ;
etc ...
[1] Pour l’anecdote je déclare aussi une variable AppPath qui est le chemin de l’application et qui prend la valeur :
AppPath := ExtractFilePath( paramstr(0) ) ;