複数ファイルをタブモードで一度に開くマNo.05219
フェレット さん 06/09/04 19:48
 
田楽DLLを使って,あるフォルダの中のファイルを開く,マクロはこの会議室を参
考にうまく動いたのですが,フォルダの中に複数あるテキストファイルを秀丸エディ
タの「タブモード」ですべて,開くにはどのようなマクロを書けばよろしいのでしょ
うか?(while文で複数開こうとすると1つのファイルが開いた後,「DLLがロー
ドされてないのにdllfunc関数が使われました」というエラーメッセージが出
て2つ目のファイルは開かないでエラー終了します)。よそしくお願いいたします。

[ ]
RE:05219 複数ファイルをタブモードで一度No.05220
Iranoan さん 06/09/04 20:14
 
 フェレットさん今日は、Iranoan です。
> 田楽DLLを使って,あるフォルダの中のファイルを開くマクロはこの会議室を参考
> にうまく動いたのですが,フォルダの中に複数あるテキストファイルを秀丸エディタ
> の「タブモード」ですべて,開くにはどのようなマクロを書けばよろしいのでしょう
> か(?while文で複数開こうとすると1つのファイルが開いた後,「DLLがロード
> されてないのにdllfunc関数が使われました」というエラーメッセージが出て
> 2つ目のファイルは開かないでエラー終了します)。
・「タブモード」で開くには
  settabmode 1;
  としておけばよいでしょう。
・複数のファイルを開くには
  DLL を使わず開くのダイアログ・ボックスを複数選択可能タイプにして、
  openfile $dir + "\\*.txt";
  でワイルド・カードを使ったり、
  OPEN;
  を使えば良いと思います。
・繰り返し DLL を使う
  while( 1 ){
       :
    openfile $f;
    loaddll $d;
       :
  }
  とファイルを開く度に DLL の呼び出しすれば済む気がします。

[ ]
RE:05220 複数ファイルをタブモードで一度No.05221
フェレット さん 06/09/04 21:24
 
Iranoan さん早速のお答えありがとうございます。
>・複数のファイルを開くには
>  DLL を使わず開くのダイアログ・ボックスを複数選択可能タイプに
>して、
ここの設定方法がよくわからないのですが,秀丸エディタの「動作環境」の中にある
のでしょうか。すみませんがお教えください。
また,下のマクロも投稿前(昨日)にも試しましたが,やはり,同じエラーがでます。
もちろん,DLLを使わないでできればそれで結構ですが。よろしくお願いいたします。
>  while( 1 ){
>       :
>    openfile $f;
>    loaddll $d;
>       :
>  }

[ ]
RE:05221 複数ファイルをタブモードで一度No.05222
Iranoan さん 06/09/04 23:41
 
 フェレットさん今日は、Iranoan です。
> >  DLL を使わず開くのダイアログ・ボックスを複数選択可能タイプに
> >して、
> ここの設定方法がよくわからないのですが,秀丸エディタの「動作環境」の中にある
> のでしょうか。
 「動作環境」→「ファイル」の ``「開く」のダイアログボックス'' にある
「複数選択タイプ」を ON にします。ただ「Windows3.1 タイプ」では選択で
きません。

> また,下のマクロも投稿前(昨日)にも試しましたが,やはり,同じエラーがでま
>す。
> もちろん,DLLを使わないでできればそれで結構ですが。よろしくお願いいたします。
> >  while( 1 ){
> >       :
> >    openfile $f;
> >    loaddll $d;
> >       :
> >  }
 こちらは再現する最低限のマクロを見ないと何ともいえません。

[ ]
RE:05222 複数ファイルをタブモードで一度No.05223
フェレット さん 06/09/05 11:39
 
Iranoan さんお答えありがとうございます。早速,今朝
> 「動作環境」→「ファイル」の ``「開く」のダイアログボック''に>ある「複数
>選択タイプ」を ON にします
上記の設定をして下記のマクロを実行しましたが,「ファイルを開く」ダイアログ・
ボックスのところで止まってしまいます。環境は,Cフォルダの中にc:\tmp1\tmp2\
3つのファイル(拡張子はC)を用意して行いました。
$pass = "C:\\tmp1\\tmp2";
settabmode 1;
openfile $pass + "\\*.c";

また,dllを使うマクロは以下のようにしましたが,1つ目を開くと終了してしまい
ます。読みにくいマクロですみません。
よろしくお願いいたします。
$fullpass = "C:\\tmp1\\tmp2\\*.c";
$pass = "C:\\tmp1\\tmp2";
settabmode 1;
loaddll hidemarudir + "\\DengakuDLL.dll";
#r = dllfunc("ENUMPATH",$fullpass);
       while (1) {
       $file = dllfuncstr("FINDNEXT");
       if ($file == "") break;
       $open_pass = $pass + "\\" + $file;
       openfile $open_pass;
       loaddll hidemarudir + "\\DengakuDLL.dll";
                 }

[ ]
RE:05223 複数ファイルをタブモードで一度No.05224
Iranoan さん 06/09/05 12:57
 
 フェレットさん今日は、Iranoan です。
> 上記の設定をして下記のマクロを実行しましたが,「ファイルを開く」ダイアログ・
> ボックスのところで止まってしまいます。
 やりたいことがやっと解りました。条件に合う全てのファイルを開きたいん
ですね。

 openfile をすると (というより loaddll をやり直すので)、ENUMPATH 関数
を使った結果はファイルごとで初期化されるんですね。
> $pass = "C:\\tmp1\\tmp2";
> settabmode 1;
> loaddll hidemarudir + "\\DengakuDLL.dll";
これ以降の部分を、末尾に置き換えてください。
#r = dllfunc("ENUMPATH","/f '" + $fullpass +"'");
while (1) {
  $file = dllfuncstr("FINDNEXT");
  if ($file == "") break;
  $of[#i] =  $pass + "\\" + $file;
  #i = #i + 1;
}
freedll;
while( #j < #i ){
  openfile $of[#j];
  #j = #j + 1;
}

[ ]
RE:05224 複数ファイルをタブモードで一度No.05225
フェレット さん 06/09/05 15:38
 
フェレットです。Iranoan さんのおかげで無事できました。ありがとうございました。
マクロは,すこしづつ解析していきます。最後に何故あのようなことをしたかったか
というと最終目的はあるフォルダの中にある拡張子が「c」だけのファイルすべてを
プリントアウトしたかったのです。そのためにこの会議室を検索しましたら以下のマ
クロをみつけました。
#c = hidemarucount;
#i = 0;
while( #i < #c ) {
 print;
 nexthidemaru;
 #i = #i + 1;
}
このマクロを実行させるためには,プリントしたいファイルすべてをタブモードで開
いていないといけないと思い,いままでのような質問をさせていただきました。おか
げさまで無事プリントもでき,やりたいことができました。ただ,これは別のスレッ
ド(新規テーマ)になると思いますけど,あるフォルダの中の任意の拡張子だけ(ま
たはすべてのファイルでも結構です)をプリントする方法は他にもあるのでしょうか。
解決すみですのでお答え願わなくても結構ですが後学のため質問しました。本当に忙
しい中,迅速なお答えありがとうございました。

[ ]
RE:05225 複数ファイルをタブモードで一度No.05226
h-tom さん 06/09/06 01:14
 

h-tom です。

>このマクロを実行させるためには,プリントしたいファイルすべてをタブモードで開
>いていないといけないと思い,いままでのような質問をさせていただきました。おか
これは秀丸で開いているファイルを対象にしているので、タブモードでなくてもいい
と思いますよ。

>げさまで無事プリントもでき,やりたいことができました。ただ,これは別のスレッ
>ド(新規テーマ)になると思いますけど,あるフォルダの中の任意の拡張子だけ(ま
>たはすべてのファイルでも結構です)をプリントする方法は他にもあるのでしょうか。
Iranoanさんのマクロをつかうなら、openfileの部分を、以下のように変更すれば、
ファイルを開かずに、印刷を行いますよ。
  openfile "/p " + $of[#j];

"/p"の意味は、秀丸エディタの起動オプションを参照してください。

[ ]
RE:05226 複数ファイルをタブモードで一度No.05227
フェレット さん 06/09/06 09:10
 
h-tom さん的確なお答えありがとうございました。下記のマクロが開かなくても印刷
できることを理解しました。
>Iranoanさんのマクロをつかうなら、openfileの部分を、以下のように変更すれば、
>ファイルを開かずに、印刷を行いますよ。
>  openfile "/p " + $of[#j];
>
>"/p"の意味は、秀丸エディタの起動オプションを参照してください。

[ ]