Namazu-win32-users-ja(旧)


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

Namazu 2.0.5 for Win32 パッチのまとめ



ども、佐藤です。
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