Živě.cz o počítačích a internetu

Tipy a triky v Delphi, díl 88. - Změna vlastností dokumentu aplikace Microsoft Word

Jan Šindelář - 30.4.2003

Změna vlastností dokumentu aplikace Microsoft Word

Zřejmě to asi nemusím připomínat, ale pro jistotu si nejdříve pořádně vysvětlíme, o jakých že vlastnostech je vlastně řeč. Otevřete-li si nějaký dokument (může to být DOC, RTF a dokonce i HTML) a v hlavní nabídce v menu Soubor vyberete položku Vlastnosti, zobrazí se vám dialogové okno s vlastnostmi dokumentu. Na první pohled není toto okno příliš rozsáhlé, ale projdete-li postupně všechny záložky, naleznete volitelných parametrů poměrně hodně (obzvlášť na poslední záložce Vlastní). Na jednotlivých záložkách tak vidíme informace o autorovi dokumentu, společnosti, klíčová slova a další a také statistické údaje a rozličné časové údaje. Některé tyto údaje můžeme měnit, jiné jsou jen pro čtení. Jako domácí uživatel, který chce obvykle jen dokument napsat a vytisknout, asi tyto údaje příliš nevyužijete. Ve firmách, kde na dokumentech pracuje i více autorů a je třeba dodržovat určitá pravidla, jsou však tyto parametry užitečné pro vyhledávání a lepší orientaci ve velkém množství dokumentů.

Dost zbytečných řečí, pojďme na Delphi. Naučíme se tyto parametry měnit a opět použijeme OLE, i když tentokrát by to šlo udělat i "rovnou". Nebylo by to ale tak čisté a přidržíme se raději této bezpečnější metody. Celý zdrojový kód jednoduchého příkladu je zde:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  wTitle = $00000001;
  wSubject = $00000002;
  wAuthor = $00000003;
  wKeywords = $00000004;
  wComments = $00000005;
  wTemplate = $00000006;
  wLastAuthor = $00000007;
  wRevision = $00000008;
  wAppName = $00000009;
  wTimeLastPrinted = $0000000A;
  wTimeCreated = $0000000B;
  wTimeLastSaved = $0000000C;
  wVBATotalEdit = $0000000D;
  wPages = $0000000E;
  wWords = $0000000F;
  wCharacters = $00000010;
  wSecurity = $00000011;
  wCategory = $00000012;
  wFormat = $00000013;
  wManager = $00000014;
  wCompany = $00000015;
  wBytes = $00000016;
  wLines = $00000017;
  wParas = $00000018;
  wSlides = $00000019;
  wNotes = $0000001A;
  wHiddenSlides = $0000001B;
  wMMClips = $0000001C;
  wHyperlinkBase = $0000001D;
  wCharsWSpaces = $0000001E;

  AWordDoc = `C:\test.doc`;
  wSaveChanges = $FFFFFFFF;

var
  WordApp: OLEVariant;
  SaveChanges: OleVariant;
begin
  try
    WordApp := CreateOleObject(`Word.Application`);
  except
    Exit;
  end;
  try
    WordApp.Visible := False;
    WordApp.Documents.Open(AWordDoc);
    WordApp.ActiveDocument.BuiltInDocumentProperties[wTitle].Value := `Název dokumentu`;
    WordApp.ActiveDocument.BuiltInDocumentProperties[wSubject].Value := `Předmět`;
  finally
    SaveChanges := wSaveChanges;
    WordApp.Quit(SaveChanges, EmptyParam, EmptyParam);
  end;
end;

end.

Tento jednoduchý příklad zajistí, že po stisknutí tlačítka budou do příslušného dokumentu (který je specifikován v konstantách) vloženy údaje o jeho názvu a předmětu. Z celé škály vlastností si pochopitelně můžete zvolit jaké chcete, stačí si jen vybrat ze seznamu, který je opět definován v konstantách. Nevyplněné parametry budou ponechány beze změn.

Tento způsob můžete aplikovat nejen na dokumenty typu DOC, ale i RTF a klidně i HTML.