Delphi - база знаний

         

Как сохранить текст MS Word в другом формате?


Как сохранить текст MS Word в другом формате?





Open a new Application and place:

a button named Button3,
a RitchText object named WordEditor
and an OpenDialog component.

From now on, you can browse for any *.doc file and load it into the RitchText object.

NOTE: Format:=6 instructs Word to save the file as RTF. Extension is not enough.



Other File Formats:

Argument Format File Format    
0   Normal (Word format)    
1   Document Template    
2   Text Only (extended characters saved in ANSI character set)    
3   Text+Breaks (plain text with line breaks; extended characters saved in ANSI character set)    
4   Text Only (PC-8) (extended characters saved in IBM PC character set)    
5   Text+Breaks (PC-8) (text with line breaks; extended characters saved in IBM PC character set)    
6   Rich-text format (RTF)    


procedure TImport_Form.ToolButton3Click(Sender: TObject);
var
  WordApp: Variant;
begin
  if OpenDialog1.Execute then
  begin
    Edit1.Text := ExtractFileName(OpenDialog1.FileName);
    StatusBar1.SimpleText := OpenDialog1.FileName;
    WordApp := CreateOleObject('Word.Basic');
    if not VarIsEmpty(WordApp) then
    begin
      WordApp.FileOpen(OpenDialog1.FileName);
      WordApp.FileSaveAs(Name := 'c:\temp_bb.rtf', Format := 6);
      WordApp.AppClose;
      WordApp := Unassigned;
      WordEditor.Lines.LoadFromFile('c:\temp_bb.rtf');
    end
    else
      ShowMessage('Could not start MS Word');
  end;

end;

How to prevent word from opening password-protected files or resume wizard files and sometimes causing application to hang ?

The sollution is to add the folowing query before openning the document:

if WordApp.ActiveDocument.HasPassword = True then
  MsgBox("Password Protected");

You can even preset the password propery as:

WordApp.Password := 'mypassword";

NOTE: If the above code generates an "Undefined property: ActiveDocument" change the:

CreateOleObject('Word.Basic');

with

CreateOleObject('Word.Application');


Взято с

Delphi Knowledge Base






Содержание раздела