※ ChatGPTを利用し、要約された質問です(原文:パスワード付きWordファイルのオープン失敗時の例外処理)
パスワード付きWordファイルのオープン失敗時の例外処理
このQ&Aのポイント
Microsoft Wordで作成したパスワード付きの文章ファイルをオープンする際に、パスワード入力に失敗した場合の例外処理方法について教えてください。
現在、ファイルオープン時にパスワード入力を失敗させると、Runtime Errorが発生し、abnomal program terminationというエラーメッセージが表示されています。このエラーを回避する方法を教えてください。
パスワード付きWordファイルのオープン時にエラーが発生し、abnomal program terminationというエラーメッセージが表示される問題について解決策を教えてください。
パスワード付きWordファイルのオープン失敗時の例外処理
少し前にも同様の質問を投稿したのですが、内容が曖昧だったと感じたので、改めて質問させていただきます。
目的は、Microsoft Wordで作成した文章ファイルにパスワードがかかっているか否かを判定することです。
現時点では、ファイルオープン時にパスワード入力を失敗させた Runtime Error を catch することで対処しようとしているのですが、このエラーの掴み方が分かりません。
エラーメッセージには abnomal program termination と出ています。
このエラーを掴む方法をどなたかご存知ないでしょうか。
よろしくお願いします。
↓ソースは以下の通りです↓
#import "C:\Program Files\Microsoft Office\Office\Mso9.dll" no_namespace rename("DocumentProperties", "DocumentPropertiesDOC")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb" no_namespace
#import "C:\Program Files\Microsoft Office\Office\Msword9.olb" rename("ExitWindows", "ExitWindowsDOC")
try {
using namespace Word;
_ApplicationPtr pAPP;
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
//Wordの起動
pAPP.CreateInstance(L"Word.Application");
pAPP->Visible = TRUE;
//新規ドキュメントを作成
DocumentsPtr pDocuments = pAPP->GetDocuments();
//任意のパスワード付きファイルをオープン。
//5要素目は正しくないパスワード。
_DocumentPtr pDocument =
pDocuments->Open(COleVariant("C:\\test.doc"),vOpt,vOpt,vOpt,
COleVariant("password"),vOpt,vOpt,vOpt,vOpt,vOpt, vOpt, vOpt);
//Wordを閉じる
pAPP->Quit();
}
catch(CException *e) {
AfxMessageBox("キャッチ");
e->Delete();
}
お礼
すべての例外を掴むのには catch(...) を使えばよかったのですね、恥ずかしながら初見でした。 CExeptionですべて掴めると勘違いしていました。 ソースの方ですが、catch(...)を使うことで無事に例外を補足できているようです。 これでとりあえずは目的の処理を行うことができそうです。 非常に助かりました、ありがとうございます。 ただ、相変わらず何という例外が出ているのかは不明のままです。 こちらの方でも調べていますが、解決するまでしばらくの間は未解決とさせてもらいます。