Je rencontre un problème avec l'utilisation de Word en OLE.

Voici ce que je fais

1- J'ouvre une boite de dialogue pour le nom du fichier à enregistrer
2- J'ouvre Word
3- J'ouvre le fichier sélectionné
4- Je rempli les signets du fichiers (Texte et image)
5- J'enregistre le fichier avec les données modifier avec le nom de la boite de dialogue.
6- Je ferme Word.

Sur le poste avec word 2003, aucun problème.

Sur le poste avec Word 2000, la boite de dialogue de word s'ouvre m'indiquant si je veux ou non sauvegarder les informations du fichier d'origine (alors qu'il ne devrait pas le faire) puis m'affiche un message indiquant que le nom de fichier n'est pas correcte.

Ci dessous ce qui permet la génération du document

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
 
 WordObj := TWordObj.Create; // Création de l'objet Word
    With WordObj do
    try
      FileName := GAPPPDOC + 'SiteAnnonces.doc';
      Open; // 
      SetSignet('REFERENCE',edtReference.Text);
      SetSignet('TITRE',edtTitre.Text);
      InsertImage('IMAGE','http://www.xxxxx/' + cboPhoto.Text);
      SetSignet('PRIX',edtPrix.Text);
      SetSignet('TEXTE',mmDescription.Text);
      if Pos('.doc',SaveDialog1.FileName) = 0 then
        SaveDialog1.FileName := SaveDialog1.FileName + '.doc';
      Save(SaveDialog1.FileName);
      Close;
      ModalResult := mrOk;
    finally
      WordObj.Free;
    end;
  end;
Creation de l'objet Word
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
constructor TWordObj.Create;
begin
  inherited Create;
  try
    FComWord := GetActiveOleObject('Word.Application');
  Except on E:Exception do
    FComWord := CreateOleObject('Word.Application');
  end;
  FComWord.Visible := False; // Empeche l'affichage de Word
 
end;
Ouverture du fichier word

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
procedure TWordObj.Open;
begin
  if FWordFileName <> '' then
    FDocument := FComWord.Documents.Open(FWordFileName);
end;
Ajout du texte par rapport au signets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
procedure TWordObj.SetSignet(SignetName, SignetValue: String);
var
  BookMark,Content : Variant;
begin
 if FDocument.BookMarks.exists(SignetName) then
 begin
   BookMark := FDocument.BookMarks.Item(SignetName);
   BookMark.Select;
   Content := BookMark.Range;
   Content.InsertAfter(SignetValue);
 end;
end;
Ajout de l'image par rapport à un signet

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
procedure TWordObj.InsertImage(SignetName, ImageName: String);
var
  BookMark,Content : Variant;
 
begin
 if FDocument.BookMarks.exists(SignetName) then
 begin
   BookMark := FDocument.BookMarks.Item(SignetName);
   BookMark.Select;
   FComWord.Selection.InlineShapes.AddPicture( ImageName, False, True, EmptyParam);
 end;
end;
Sauvegarde du fichier modifier

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
procedure TWordObj.Save(FileName: String);
begin
  Try
    If FileName = '' then
      FDocument.Save
    else
      FDocument.SaveAs(FileName);
  Except on E:Exception do
    raise TSAVEERROR.Create(E.Message);
  end;
end;
Merci ^^