我在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;
办公室版本有这个问题吗? 因为文件是.docx。它适用于.doc。
请帮我解决这个问题。
我正在阅读文档中的注释并将文档保存在服务器上。它对于文档的其余部分工作正常,扩展名为* .docx和* .doc
也可以请你提供我在perl中如何做到这一点。
我想关闭2003办公室和2007年办公室版本的文件。
这是版本问题吗?
谢谢和问候 Arvind Porlekar
答案 0 :(得分:1)
等待!你打开它 ReadOnly ,然后将其标记为已保存 ??那就在我的心理处理器中抛出旗帜。
我能找到的文档似乎表明这是一个关于保存到其他格式的问题。这可能是其中一个但不是另一个案例的原因。
此外,我看到有迹象表明这是一个COM错误。它有助于了解COM的一些信息。可能doc和docx是由先前doc逻辑定义的相同接口的完全不同的实现。并且可能的情况是旧的实现(doc)可以说你想要打开它ReadOnly,但是然后想要将它标记为已保存,而新实现的想法是你真的不应该这样做。
正如您所看到的here,其中一个处理的参数是OriginalFormat
,如果您没有指定该参数,它可能默认为doc格式,然后抛出异常你试图以不同的格式保存,没有明确的指示。另外一个论点是SaveChanges
。
所以可能是你隐含地告诉它以默认的doc格式保存更改,它以doc格式工作,但是抱怨尝试以docx格式的其他格式保存它。 (可以理解)