2012-04-17 14 views
0

perlでは次の例外が発生しています。また、私は今perl技術になっています。 例外は次のとおりです。ここPerlで文書を閉じるときにOLE例外が発生する

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年のオフィス版のために文書を閉じたいと思っています。

これはバージョンの問題ですか?

おかげに関して アービンドPorlekar

答えて

1

待って!あなたはそれを開いていますReadOnlyとそれにマークを付けて ??そこに私の精神的なプロセッサーに旗が投げ込まれます。

  • 私が見つけることができるドキュメントは、これが別のフォーマットに保存する際の問題であると思われるようです。これは、それ以外の場合ではなく、それを説明するかもしれない。

  • また、これはCOMエラーであることがわかりました。それはCOMについて何かを知るのに役立ちます。おそらく、docとdocxは、以前のdocロジックで定義された同じインタフェースの全く異なる実装です。古い実装(doc)は、ReadOnlyを開きたいが、それを保存済みとしてマークしたいと言ってもいいかもしれないが、新しい実装には本当にこれをしてはいけないという考えがある。

あなたがhereを見ることができるように、取り扱いの引数のいずれかがOriginalFormatあり、そしてそれはあなたが、あなたがしようとしている例外をスローDOC形式にその引数のそれのデフォルトを指定しない場合ということかもしれません明示的な指示なしに異なるフォーマットで保存する。引数の他にもSaveChangesがあります。

doc形式で動作するデフォルトのdoc形式で変更を保存するように暗黙的に指示しているが、別の形式でdocx形式で保存しようとすると文句を言う可能性があります。(わかりやすく)

+0

私は文書からコメントを読んで、その文書をサーバーに保存しています。拡張子が* .docxと* .docの文書の残りの部分については正常に動作します。 – user1338040

関連する問題