Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Namazu 2.0.5 for Win32 パッチのまとめ
- From: Mitsuo Satou <satou@xxxxxxxxxxxxxx>
- Date: Wed, 03 Jan 2001 15:33:21 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 00540
ども、佐藤です。
Perlの勉強がてらmknmz、olepowerpoint.plのパッチを作成したのでMLに
流しておきます。あと、olemsword.pl、oleexcel.plのパッチも再掲載
しておきます。
パッチする場合は自己責任で行ってください(^^;
----------------------------------------------------------------------
■mknmz のパッチ
【対象】 Namazu 2.0.5 for Win32/mknmz
【動作テスト】Windows98SE
【変更内容】
・463〜468行
オリジナル mknmz 509行目でsjisからeucに変換した$uriを、再度sjis
に変換し直します。(対応できないファイルの処理)
・474〜479行
オリジナル mknmz 509行目でsjisからeucに変換した$uriを、再度sjis
に変換し直します。(対応できるファイルの処理)
【備考】
・mknmz -U 時にMS-DOSプロンプト(コマンドプロンプト)で表示する
URIをEUCからSJISに変換するパッチです。
修正しなくても動作に影響はありません。気になる人だけ修正して
ください。
・半角カナのディレクトリ名やファイル名は扱えない。これらは全角カナ
に変換されます。これはNamazuの仕様のようですね。
C:\namazu\bin>FC /N mknmz.org mknmz
ファイルを比較しています : mknmz.org と mknmz
****** mknmz.org
462: if (defined $err) {
463: print $msg_prefix . "$uri $err\n";
464: print $fh_errorsfile "$cfile $err\n";
****** mknmz
462: if (defined $err) {
463: if (($SYSTEM eq "MSWin32") || ($SYSTEM eq "os2")) {
464: my $uri2 = codeconv::eucjp_to_shiftjis($uri);
465: print $msg_prefix . "$uri2 $err\n";
466: } else {
467: print $msg_prefix . "$uri $err\n";
468: }
469: print $fh_errorsfile "$cfile $err\n";
******
****** mknmz.org
468: # Print processing file name as URI.
469: print $msg_prefix . "$uri [$mtype]\n";
470:
****** mknmz
473: # Print processing file name as URI.
474: if (($SYSTEM eq "MSWin32") || ($SYSTEM eq "os2")) {
475: my $uri2 = codeconv::eucjp_to_shiftjis($uri);
476: print $msg_prefix . "$uri2 [$mtype]\n";
477: } else {
478: print $msg_prefix . "$uri [$mtype]\n";
479: }
480:
******
----------------------------------------------------------------------
■olemsword.pl のパッチ
【対象】 Namazu 2.0.5 for Win32/olemsword.pl
【動作テスト】Word97(SR-1)、Word2000
【変更内容】
・170〜174行
'PasswordDocument' => 'dummy password' で対象の .doc ファイルに
読み取りパスワードを付けていた場合、確認ダイアログ無しでスキップ
させる。
'ReadOnly' => 1 で対象の .doc ファイルを読み込み専用でオープン
する。
【備考】
C:\namazu\share\namazu\filter\win32>FC /N olemsword.pl.org olemsword.pl
ファイルを比較しています : olemsword.pl.org と olemsword.pl
****** olemsword.pl.org
168:
169: my $doc = $word->{Documents}->open($cfile);
170: die "Cannot open File $cfile" unless ( defined $doc ) ;
****** olemsword.pl
168:
169: # my $doc = $word->{Documents}->open($cfile);
170: my $doc = $word->{Documents}->open({
171: 'FileName' => $cfile,
172: 'PasswordDocument' => 'dummy password',
173: 'ReadOnly' => 1
174: });
175: die "Cannot open File $cfile" unless ( defined $doc ) ;
******
----------------------------------------------------------------------
■oleexcel.pl のパッチ
【対象】 Namazu 2.0.5 for Win32/oleexcel.pl
【動作テスト】Excel97(SR-1)、Excel2000
【変更内容】
・128行
タイトルにファイル名が入るように""を外した。
・169〜174行
'UpdateLinks' => 0 で対象の .xls ファイルのリンク更新のダイアログ
表示しないようにする。
'ReadOnly' => 1 で対象の .xls ファイルを読み込み専用でオープン
する。
'Password' => 'dummy password' で対象の .xls ファイルに読み取り
パスワードを付けていた場合、確認ダイアログ無しでスキップさせる。
・211〜217行
シートのセル使用範囲が高さ、幅のどちらかが100を越えた場合、セル
使用範囲の開始位置(左上)はそのままで、使用範囲が100を越えた
部分に対し、強制的に範囲を100に制限します。
これにより、操作ミスでセル使用範囲が異常になっても無限ループに
陥るのを防ぐことが可能です。
【備考】
・セル使用範囲の異常を知るには、以下のVBAを実行してください。
------------------------------------------------------------
Sub UsedSize()
Dim swork As String
swork = "幅:" & ActiveSheet.UsedRange.Columns.Count & _
"/高さ:" & ActiveSheet.UsedRange.Rows.Count
MsgBox swork
End Sub
------------------------------------------------------------
このVBAは現在アクティブなシートのセル使用範囲をダイアログに表示
します。
操作上のミスから高さが異常になる場合が多いので注意してください。
C:\namazu\share\namazu\filter\win32>FC /N oleexcel.pl.org oleexcel.pl
ファイルを比較しています : oleexcel.pl.org と oleexcel.pl
****** oleexcel.pl.org
127: # get Title
128: $fields->{'title'} = "$cfile->BuiltInDocumentProperties(1)->{Value}"
129: unless $cfile->BuiltInDocumentProperties(1)->{Value}; # title
****** oleexcel.pl
127: # get Title
128: $fields->{'title'} = $cfile->BuiltInDocumentProperties(1)->{Value}
129: unless $cfile->BuiltInDocumentProperties(1)->{Value}; # title
******
****** oleexcel.pl.org
166: open (STDERR,">&SAVEERR");
167:
168: my $wb = $excel->Workbooks->Open($cfile);
169: die "Cannot open File $cfile" unless ( defined $wb );
****** oleexcel.pl
166: open (STDERR,">&SAVEERR");
167:
168: # my $wb = $excel->Workbooks->Open($cfile);
169: my $wb = $excel->Workbooks->Open({
170: 'FileName' => $cfile,
171: 'UpdateLinks' => 0,
172: 'ReadOnly' => 1,
173: 'Password' => 'dummy password'
174: });
175: die "Cannot open File $cfile" unless ( defined $wb );
******
****** oleexcel.pl.org
203:
204: my $ur = $sheet->{UsedRange};
205:
****** oleexcel.pl
209:
210: #my $ur = $sheet->{UsedRange};
211: my $tmpur = $sheet->{UsedRange};
212: my $tmprc = ($tmpur->Rows->Count >100 ? 100 : $tmpur->Rows->Count);
213: my $tmpcc = ($tmpur->Columns->Count >100 ? 100 : $tmpur->Columns->Count);
214: my $ur = $sheet->Range(
215: $sheet->Cells($tmpur->Rows->Row, $tmpur->Columns->Column),
216: $sheet->Cells($tmpur->Rows( $tmprc )->Row, $tmpur->Columns( $tmpcc )->Column)
217: );
218:
******
----------------------------------------------------------------------
■olepowerpoint.pl のパッチ
【対象】 Namazu 2.0.5 for Win32/olepowerpoint.pl
【動作テスト】PowerPoint97(SR-1)
【変更内容】
・170〜173行
'ReadOnly' => 1 で対象の .ppt ファイルを読み込み専用でオープン
する。
・181行
表示しているPowerPointを[ファイル−終了]と同じ動作で閉じる。
【備考】
・mknmzrc の $ALLOW_FILE に
"|.*\\.ppt" . # PowerPoint
を追加。
・PowerPoint97でテストした結果、WordやExcelのようにPowerPointを
非表示のまま処理することはできない。必ず表示しないとOLEオート
メーション処理に失敗する。多分PowerPointの仕様でしょう。
C:\namazu\share\namazu\filter\win32>FC /N olepowerpoint.pl.org olepowerpoint.pl
ファイルを比較しています : olepowerpoint.pl.org と olepowerpoint.pl
****** olepowerpoint.pl.org
168:
169: my $prs = $ppt->{Presentations}->Open($cfile);
170: die "Cannot open File $cfile" unless ( defined $prs );
****** olepowerpoint.pl
168:
169: # my $prs = $ppt->{Presentations}->Open($cfile);
170: my $prs = $ppt->{Presentations}->Open({
171: 'FileName' => $cfile,
172: 'ReadOnly' => 1
173: });
174: die "Cannot open File $cfile" unless ( defined $prs );
******
****** olepowerpoint.pl.org
176: undef $prs;
177: undef $ppt;
****** olepowerpoint.pl
180: undef $prs;
181: $ppt->Quit();
182: undef $ppt;
******
----------------------------------------------------------------------
以上、お役に立てば幸いです。
佐藤 充男
satou@xxxxxxxxxxxxxx