Namazu-users-ja(旧)


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

インデックス作成時、OLE::WordでCall Methodエラー



初めて投稿します。
自分ではクリアできない問題があるのでご相談させて下さい。

■ 環境

namazu v2.0.12
OS:Windows2000 Server SP3
WWWServer:IIS
Perl:v5.6.1 built for MSWin32-x86-multi-thread
その他:Word2000がインストールされています。

という環境で構築しております。

■ 問題

HTML、PDFのインデックス作成までは出来るのですが、
Wordのインデックス作成時に以下のようなエラーが出ます。

検索対象のファイルを調べています...
42個のファイルがインデックス作成の対象として見つかりました
1/42 - /C|/doc_lib/Other/AS.doc Can't call method "open" on an undefined value at C:/namazu/share/namazu/filter/win32/olemsword.pl line 194.

1/41 - /C|/doc_lib/Other/AutoservNew.doc Can't call method "open" on an undefined value at C:/namazu/share/namazu/filter/win32/olemsword.pl line 194.

1/40 - /C|/doc_lib/Other/Solution_Reporting_Overview.doc Can't call method "open" on an undefined value at C:/namazu/share/namazu/filter/win32/olemsword.pl line 194, <GEN5> line 3.

■ してみた事

内容からolemsword.plに原因がありそうです。
内容を見ますと、エラーの該当部分は

    my $doc = $word->{Documents}->open({
		'FileName' => $cfile,
		'PasswordDocument' => 'dummy password',
		'ReadOnly' => 1
	});

の最初の行の場所です。
(過去のログを見ると、この辺りの部分はパスワード付き文章をうまく
 ハンドルするために修正されてCommitされたもののようですね……)

そこで、この部分をシンプルにしたりなんだりしても駄目でした。
PerlによるOLEの利用についてもインターネットで色々検索しましたが、
上記のコードに問題があるとも思えません。

サーバーにはWord2000がインストールされておりますが、
OLEはPerlのインストールで自動的に利用可能になると言う事なので
Word2000の状態には関係しないのかなと思っているのですが……。

■ その他

ちなみに、現在はインデックスの作成をASPを使って出来るようにしています。

makeindex.bat

del C:\namazu\var\namazu\index\namazu.htm
del C:\namazu\var\namazu\index\namazu_err.htm
perl C:\namazu\bin\mknmz -a -U -O C:\namazu\var\namazu\index C:\doc_lib 1>C:\namazu\var\namazu\index\namazu.htm 2>C:\namazu\var\namazu\index\namazu_err.htm

というバッチファイルを作成し、

<%
response.write "インデックス作成タスクを起動中です。このままお待ち下さい。<br>"

Set WshShell = Server.CreateObject ("WScript.Shell")
WshShell.Run "C:\WINNT\system32\makeindex.bat"
Set WshShell = Nothing

response.write "インデックス作成タスクが起動しました。<br>"
response.write "<a href='http://demo2000/scripts/search/namazu.cgi.exe'>もどる</a>"
%>

というASPファイルをブラウザから呼び出せるようにしてあります。
その他に通常はTaskManagerにて毎晩インデックス作成をしております。

CONEX