Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 原因不明のハングアップ? ( Re: パスワード付文書のインデックス化 )
- From: Mitsuo Satou <satou@xxxxxxxxxxxxxx>
- Date: Fri, 29 Dec 2000 13:04:41 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 00537
- References: <E8012C792B25D3119C7A006008A1FDBE300068@NT_PDC> <E8012C792B25D3119C7A006008A1FDBEE351@NT_PDC>
佐藤です。
On Fri, 29 Dec 2000 12:24:48 +0900
"Takahiko TAMURA" <takat@xxxxxxxxxxxxxxxx> wrote:
> > とあるので getShapesをコメント化してみてはいかがでしょうか?
> 試してみましたがダメでした。
じゃあ、図(シェイプ)が原因でないことがはっきりしましたね。
> この<図表の多い>文書を削除しても症状が出るので、原因は
> その次に検索対象となった文書にあると思われます。
>
> その文書については必ず2枚目のシートを検索中にハングアップ
> してしまうみたいです。それも、シートの順番を変えてみてもダメ
> でした。シートを最初の1枚だけにすると正常に動作しました。
図(シェイプ)の無いシートということであれば、やはりセルの範囲が異常
になっているのでしょう。この前書いたVBAを試してみればセル範囲の問題
かどうかを切り分けできると思います。
> oleexcel.pl を追跡してみると (perl は私自身、よくわかっていませんが)
> 112行目に enum というサブルーチンがあって、その中の
> 118行目〜120行目までのループから抜け出てこないことを
> 確認しました。
>
> この部分です。
> my $e = Win32::OLE::Enum->new($enum_objs);
> while(($obj = $e->Next)) {
> return 0 if (!&$func($obj, $cont));
> }
sub getCells ($$) {
(略)
oleexcel::enum($ur->Cells, $enum_a_cell, $cont);
return undef;
}
sub getShapes ($$) {
(略)
oleexcel::enum($sheet->Shapes,\&enum_a_shape, $cont);
return undef;
}
getCellsとgetShapesからenumを呼び出してますね。やはりセル範囲の異常
の可能性が濃厚です。
> 以前、このMLで Excel 文書インデックス化中の無限ループについて
> X-ML-Name: namazu-win32-users-ja
> X-Mail-Count: 00379
(略)
> というのがありましたが(残念ながらその件に関するコメントはありませんでし
> たが)、
> こちらの症状はエラーログを見ても何もなかったので、本当に<無限ループ>
> しているのだと思います。
この手の問題はそのファイルを見ない限り調査できません(^^;
調べてみたい気はしますが、渡せない内容であるならば自力解決するしか
ありませんね。で、その調査のためにVBAのコードを書きました。
VBAのコードですが、ActiveSheets(現在アクティブなシート)のセル範囲を
返すので、シートを切り替えながらマクロ実行をするだけです。
マクロウィルスの警告メッセージが嫌いであれば、問題のファイルをコピー
して、そのコピーしたファイルで試せば良いわけです。
私もこの問題に引っかかり無限ループしたので、問題点を切り分けた結果が
セル範囲の異常だったのです。
> 断片的な情報で申し訳ございませんが、何か参考になることがあれば
> 教えていただければと思います。最悪は DENY_FILE で回避しようとは思います。
いや、Namazuは便利なので動作させたい気持ちは良く判ります。
であればこそ、是非問題点を掴んでMLにフィードバックしていただけると
うれしいです。
とはいっても、DENY_FILE で回避する案も立派な対策だと思いますよ。
佐藤 充男
satou@xxxxxxxxxxxxxx