Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 原因不明のハングアップ? ( Re: パスワード付文書のインデックス化 )



佐藤です。

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