【问题标题】:Delphi Ole Automation - Save Word97-2003 file in Word 2010 without Save As dialogDelphi Ole Automation - 在 Word 2010 中保存 Word97-2003 文件而不使用“另存为”对话框
【发布时间】:2013-01-24 07:26:44
【问题描述】:

我正在尝试使用 Delphi 6 和 Word 2010 保存 Word 97-2003 文档 (.doc)。

在 Word 2010 之前一切正常

WordDoc.SaveAs(FileName := FileName, FileFormat := wdFormatDocument);

在哪里FileName := 'c:\doc.doc'

现在,Word 2010 出现了一个保存对话框,我不知道为什么。 我已经尝试了新的 SaveAs2 方法

WordDoc.SaveAs2(FileName := FileName, FileFormat := wdFormatDocument, CompatibilityMode:= wdWord2003);

但结果相同。

奇怪的是,

WordDoc.SaveAs2(FileName := FileName, FileFormat := wdFormatDocumentDefault, CompatibilityMode:= wdWord2003);

工作正常,没有“另存为”对话框,但保存的文件具有 Word 2010 格式和 .doc 扩展名,这会混淆旧的 Word 版本。

那么,有什么想法可以在不弹出“另存为”对话框的情况下使用 Word 2010 以旧文档 Word 格式保存文件?

【问题讨论】:

  • 我无法重现。请提供一个完整的可编译程序来演示该行为。

标签: delphi ms-word ole-automation


【解决方案1】:

@David Heffernan:好吧,编写一个简短的演示程序解决了我的问题。

原程序打开一个 *.mhtml 文件并尝试将其转换为 doc 格式。我遇到了问题。创建新文档时,您可以将其保存为任何格式而不会出现问题。这让我想到问题可能是我从非本地格式保存到了另一种非本地格式。

所以,我的解决方案是保存两次:首先是原生格式,然后是旧格式:

procedure SaveDocFile(WordDoc: Variant; FileName: string);
const wdFormatDocumentDefault=16;
begin
  WordDoc.ActiveWindow.View.Type := wdPrintView;
  if WordDoc.Application.Version='14.0' then
  begin
    WordDoc.SaveAs2(FileName := FileName, FileFormat := wdFormatDocumentDefault);
    WordDoc.SaveAs2(FileName := FileName, FileFormat := wdFormatDocument);
  end
  else
    WordDoc.SaveAs(FileName := FileName, FileFormat := wdFormatDocument);
end;

【讨论】:

  • 很高兴听到。写一个简短的复述通常可以帮助您解决问题。
【解决方案2】:

文件格式的常量列表:

wdFormatDocument                    =  0
wdFormatDocument97                  =  0
wdFormatDocumentDefault             = 16
wdFormatDOSText                     =  4
wdFormatDOSTextLineBreaks           =  5
wdFormatEncodedText                 =  7
wdFormatFilteredHTML                = 10
wdFormatFlatXML                     = 19
wdFormatFlatXMLMacroEnabled         = 20
wdFormatFlatXMLTemplate             = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML                        =  8
wdFormatPDF                         = 17
wdFormatRTF                         =  6
wdFormatTemplate                    =  1
wdFormatTemplate97                  =  1
wdFormatText                        =  2
wdFormatTextLineBreaks              =  3
wdFormatUnicodeText                 =  7
wdFormatWebArchive                  =  9
wdFormatXML                         = 11
wdFormatXMLDocument                 = 12
wdFormatXMLDocumentMacroEnabled     = 13
wdFormatXMLTemplate                 = 14
wdFormatXMLTemplateMacroEnabled     = 15
wdFormatXPS                         = 18
wdFormatOfficeDocumentTemplate      = 23
wdFormatMediaWiki                   = 24

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2018-03-22
    • 2013-07-06
    • 2013-11-09
    • 1970-01-01
    相关资源
    最近更新 更多