0

我在 perl 中遇到了以下异常。我现在也使用 perl 技术。例外是:

Win32::OLE<0.1709> error 0x800a1423
       in METHOD/PROPERTYGET "Close" at getWordComments.pl line no 350

这是异常即将到来的 getWordComments.pl 的示例代码。
A) 以下代码用于打开文档

#Open the document in MS Word
use Win32::OLE;
{
    no warnings;
    use Win32::OLE::Const 'Microsoft.Word';    # wd  constants
}

$word=Win32::OLE->new('Word.Application');
$word->{Visible} = 1;
$word->{DisplayAlerts} = 0;

$Document=$word->Documents->Open({Filename => $filename, ReadOnly => 1});

B)然后我正在阅读评论。
C) 以下代码用于关闭文档。

$Document->{Saved}=1;
$Document->Close;
undef $Document;

#Close Word
$word->Quit;
undef $word;

是office版本的问题吗?因为文档是 .docx。它适用于.doc。

请帮我解决这个问题。


我正在阅读文档的评论并将文档保存在服务器上。它适用于扩展名为 *.docx 和 *.doc 的文档的其余部分

你也可以请我告诉我如何在 perl 中做到这一点。

我想关闭 2003 office 和 2007 office 版本的文档。

这是版本问题吗?

感谢和问候 Arvind Porlekar

4

1 回答 1

1

等待!您正在打开它ReadOnly然后将其标记为Saved ?? 就在我的心理处理器中。

  • 我可以找到的文档似乎表明这是一个关于保存为不同格式的问题。这可能解释了它合而为一但不是其他情况的原因。

  • 此外,我已经看到迹象表明这是一个 COM 错误。了解一些有关 COM 的信息会有所帮助。可能 doc 和 docx 是前面 doc 逻辑定义的同一接口的完全不同的实现。可能是旧实现(doc)可以说你想以只读方式打开它,但又想将其标记为已保存,而新实现认为你真的不应该这样做。

正如您在此处看到的那样,处理的参数之一是OriginalFormat,如果您不指定该参数,它可能会默认为 doc 格式,然后抛出您试图以不同格式保存的异常,而无需显式指示。另一个论点是SaveChanges

因此,您可能隐含地告诉它以默认的 doc 格式保存更改,该格式适用于 doc 格式,但抱怨试图以 docx 格式以不同的格式保存它。(可以理解)

于 2012-04-17T11:10:59.783 回答