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

Материал из DRKB


Создайте новую форму и разместите на ней:

  • кнопку Button3,
  • компонент RichText с названием WordEditor,
  • компонент OpenDialog.

Теперь вы можете выбирать любой файл *.doc и загружать его в компонент RichText.

Примечание
Format := 6 заставит Word сохранять файл как RTF. Указать расширение файла не достаточно.

Другие форматы файлов:

  • 0 - Обычный (Word format)
  • 1 - Шаблон документа
  • 2 - Только текст (в кодировке ANSI)
  • 3 - Текст с разделителями (текст с переносами строк; кодировка ANSI)
  • 4 - Только текст (PC-8) (кодировка IBM PC)
  • 5 - Текст с разделителями (PC-8) (текст с переносами строк; кодировка IBM PC)
  • 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;


Как сделать, чтобы Word не открывал файлы с паролем или файлы помощника, которые вызывают зависание?

Перед открытием документа нужно добавить:

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

Можно задать пароль:

WordApp.Password := 'mypassword";
Внимание
Если код выше выдает "Undefined property: ActiveDocument", замените:
CreateOleObject('Word.Basic');

на

CreateOleObject('Word.Application');


Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04420