【マクロ】タブモードでファイル新規作成No.29736
いけ さん 11/04/17 10:49
 
いつも参考にさせていただいています。

<やりたいこと>
あるツールのログ(CSVファイル)が長いため、1項目ごとにファイルを分ける必要
があります。
そのために、タブモードでファイル新規作成後、元のタブに戻るマクロ処理をしたい
と考えています。

<ログの内容>
1つのファイルの中身が下記のようになっています。
 はじめ
 111
 222
 333
 おわり
 はじめ
 444
 555
 666
 おわり
 はじめ
 777
 888
 999
 おわり
 ・
 ・
 ・

というように、各項目毎のログが途切れなく続いています。
※エクセルで開けないほどの行があります。

<ほしい結果>
上記のような1つのファイルだとエクセルで加工しにくいので、
★ファイル1
 はじめ
 111
 222
 333
 おわり
★ファイル2
 はじめ
 444
 555
 666
 おわり
★ファイル3
 はじめ
 777
 888
 999
 おわり
★ファイル・
 ・
 ・
 ・

というように、項目の数だけファイルを作りたいと思います(多くても20個程度)

<マクロ化したいこと>
項目毎に手動で範囲選択してコピペを繰り返してファイル化してもよいのですが、そ
の部分を自動化してマクロにできればと思います。

<現在までに出来ていること>
//ファイルの先頭に移動
gofiletop;

//検索実行
searchdown "おわり";

//検索ヒットした行を開始位置とする,現在行をマークする
setmark;

//範囲選択開始
beginlinesel;

//ファイルの先頭に移動
gofiletop;

//範囲選択終了 (範囲選択はそのまま)
endsel;

//範囲選択された部分をカット
cut;

//新規ファイル作成
newfile;

//ペースト
paste;

元の文書に戻る
★どうする?

ファイルの先頭に移動
※あとは繰り返し

<アドバイスをお願いしたいところ>
現在、秀丸エディタはV8で、タブモードで動作しています。
newfileで新規ファイルを作成し、そこにペーストするところまではいちおう動作確
認できました。
そのあと、もとの文書に戻ってきて、処理を繰り返したいのですが、戻す方法がわか
りません。
「settabgroup」を使うような気もするのですが。。。

※なお、最初のファイル(タブで一番左)はファイル名があっても
なくても動作できるようになればベストです。無理であれば、最初
にファイル名はつけておきます。
※また、新規ファイルを保存するところまでは考慮しなくてOKです。

よろしくお願いします。


[ ]
RE:29736 【マクロ】タブモードでファイルNo.29737
Iranoan さん 11/04/17 12:08
 
 いけさん今日は、一ユーザの Iranoan です。
> タブモードでファイル新規作成後、元のタブに戻るマクロ処理をしたい
> と考えています。
<snip>
>  はじめ
>  111
>  222
>  333
>  おわり
<snip>
> というように、項目の数だけファイルを作りたいと思います(多くても20個程度)
//------------------------------------------------------------
setcompatiblemode 0x20F;
$s = year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-";
#i = 0;
#h = hidemaruhandle( 0 );
beginsel;
searchdown "はじめ";
while( result ){
  call SaveFile;
  finddown;
}
gofileend;
call SaveFile;

endmacro;

SaveFile:
  cut;
  openfile "/h";
  #s = hidemaruhandle( 0 );
  poppaste;
  saveas $s + "-" + str( #i ) + ".log";
  setactivehidemaru( #h );//これで切り替え
  #i = #i + 1;
  closehidemaru( #s );//保存済みなので、閉じている
  beginsel;
  return;

[ ]
RE:29737 【マクロ】タブモードでファイルNo.29740
いけ さん 11/04/17 12:58
 
Iranoan さん、こんにちは。

ありがとうございます!

ご教示いただいたマクロで思ったとおりの結果になっています。

とりあえず新規作成、新規作成、新規作成、・・・でファイルだけ
作っておき、あとで保存のことを考えようと思っていましたが、
もうそこまで一足飛びで出来ていますね。
※1つ1つ保存するほうが処理は簡単だということですね。
※私の頭が固かったようです。。。

処理の書き方についてはまだよく理解できていないので、
これから勉強させてもらいます。

同じようなログで記録形式の異なるものもあるので、
今回のマクロを応用してそちらも加工を考えていきます。

どうもありがとうございました。


[ ]
RE:29737 【マクロ】タブモードでファイルNo.29745
いけ さん 11/04/17 18:38
 
追加です。

目的は果たせたのですが、どうも様子がおかしいです。

最初に検証していたPCでは確かに動作するのですが、
別のPCで同じマクロを動作させようとすると、
エラー?で終了してしまいます。
※本当に動かしたいのはエラーとなっている方のPCです。

(ポップアップメッセージ)
「XXXXX は空のファイルです。削除しますか?」

秀丸エディタ自体は同じバージョンです。(V8.02)

OSも、どちらも同じXP sp3です。

秀丸エディタの設定がどこか違うせいでしょうか?

よろしくお願いします。

[ ]
RE:29745 【マクロ】タブモードでファイルNo.29746
Iranoan さん 11/04/17 21:35
 
 いけさん今日は、一ユーザの Iranoan です。
> 最初に検証していたPCでは確かに動作するのですが、
> 別のPCで同じマクロを動作させようとすると、
> エラー?で終了してしまいます。
<snip>
> 秀丸エディタの設定がどこか違うせいでしょうか?
 思い当たる設定については考慮しているつもりですが、抜けていることがあ
るかもしれません。
 実行元のログは同じファイルですよね。

[ ]
RE:29746 【マクロ】タブモードでファイルNo.29747
いけ さん 11/04/17 22:10
 
こんばんわ。

> 実行元のログは同じファイルですよね。

そうです、同じファイルです。

本番のログでもできないですし、会議室にあげたサンプルの
ような簡単なものでも動作しませんでした。

別のPCでは出来ているので急ぎませんが、もし思い当たる
ところがあればまたお願いします。

よろしくお願いします。

[ ]
RE:29747 【マクロ】タブモードでファイルNo.29748
山紫水明 さん 11/04/18 08:32
 
 いけさん,

>本番のログでもできないですし、会議室にあげたサンプルの
>ような簡単なものでも動作しませんでした。

外しているかもしれませんが,マクロの冒頭に
gofiletop;
の1文を挿入したらいかがでしょう。

                                    山紫水明(ユーザー)
                                    SANSHISUIMEI

[ ]
RE:29748 【マクロ】タブモードでファイルNo.29763
いけ さん 11/04/22 01:24
 
こんばんわ。

>外しているかもしれませんが,マクロの冒頭に
>gofiletop;
>の1文を挿入したらいかがでしょう。

gofiletop;
を入れてみたのですが、変化なしでした。

そのほか、動作環境やファイルタイプ別の設定でそれらしい
ところは一致させたのですが効果なしです。

何でしょうね。。。

[ ]
RE:29763 【マクロ】タブモードでファイルNo.29764
秀丸担当 さん 11/04/22 09:47
 

自分のところでも試してみたところでは、エラーメッセージは出ませんでした。

このメッセージは保存する内容が空だったときに出ます。
マクロを修正して、openfile "/h";はnewfile;にして、保存する前にmessage文
を入れてみて、保存すべき内容が空になっていることがないか確認してみると何
かわかるかもしれません。

マクロの例:

gofiletop;
setcompatiblemode 0x20F;
$s = year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-";
#i = 0;
#h = hidemaruhandle( 0 );
beginsel;
searchdown "はじめ";
while( result ){
  call SaveFile;
  finddown;
}
gofileend;
call SaveFile;

endmacro;

SaveFile:
  cut;

  //★修正
  //  openfile "/h";
  newfile;
 
  #s = hidemaruhandle( 0 );
  poppaste;
 
  //★追加
  message $s + "-" + str( #i ) + ".log" +"というファイル名で保存します";
 
  saveas $s + "-" + str( #i ) + ".log";
  setactivehidemaru( #h );//これで切り替え
  #i = #i + 1;
  closehidemaru( #s );//保存済みなので、閉じている
  beginsel;
  return;


ファイルを開かずにマクロを実行すると「2011-04-22-09-45--0.log - は空のフ
ァイルです。削除しますか?」と出ました。
これは内容が空だからでます。

もし差し支えなければ実際のファイル名や、エラーメッセージを具体的に書いて
いただけると何かわかるかもしれないです。


このメッセージは、動作環境の設定で出ないようにすることもできます。
[その他]→[動作環境]で左下の「上級者向け設定」をONにして、
[その他]→[動作環境]→[ファイル]→[保存]の「保存するファイルが空だったと
き」をOFFにするとメッセージは出なくなります。

それ以外の設定は思いつきませんでしたが、もし設定が関係しているとしたら、
設定内容の保存/復元で合わせてみると原因がわかるかもしれないです。
[その他]→[設定内容の保存/復元]で問題のPCの設定をいったん退避しておき、
それから大丈夫なPCから設定を移してからテストして、あとで戻すといいかもし
れないです。

[ ]
RE:29764 【マクロ】タブモードでファイルNo.29766
いけ さん 11/04/23 00:51
 
こんばんわ。

試してみました。
サンプル.txtというファイルを用意します。



中身は次の通りです。
////////////////////////////////////////////////////////////////
はじめ
3/1
3/1
3/1
おわり
はじめ
3/2
3/2
3/2
おわり
はじめ
3/3
3/3
3/3
おわり
はじめ
3/4
3/4
3/4
おわり
////////////////////////////////////////////////////////////////



マクロを実行すると次のメッセージが出ます。
(いずれも「いいえ」で回答して続ける)

2011-04-23-00-17--0.log - は空のファイルです。削除しますか?
2011-04-23-00-17--1.log - は空のファイルです。削除しますか?
2011-04-23-00-17--2.log - は空のファイルです。削除しますか?
2011-04-23-00-17--3.log - は空のファイルです。削除しますか?

出来たファイルは空です。



次に、アドバイスいただいた新しいマクロに変えて実行したところ、
保存される前のファイルの状態が見えましたが、確かに空っぽです。



そして最後に、正常に動作するPCの設定内容を保存して、
正常に動作しないPCにその設定内容を復元したところ、
マクロは正常に動作するようになりました。



ちなみに、また設定内容を元の状態に戻すとマクロは動作
しなくなりました。



また、ファイルが空の時にメッセージ出さないように設定
変更すると、確かにポップアップは出なくなりましたが、
結果は同じです(空っぽ)。



ということで設定内容が2台のPCでどこか違うということ
に原因がありそうですが、今のところ特定できません。

2台のPCの設定内容をテキスト比較ツールで比較してみても、
相違点がありすぎてどこが本当の原因か判断できませんでした。

別のPCの設定内容を復元して、このまま使い続けて動作上問題
なければ使いますが、大丈夫でしょうか?

スッキリしないですね。。。

[ ]
RE:29766 【マクロ】タブモードでファイルNo.29767
Iranoan さん 11/04/23 02:19
 
 いけさん今日は、一ユーザの Iranoan です。
 他の方に任せっきりになってしまい、心苦しい限りです。

> ということで設定内容が2台のPCでどこか違うということ
> に原因がありそうですが、今のところ特定できません。
 両方のファイルを秀丸エディタで開いて、「他の秀丸エディタと内容比較」
を使うと、違いを見つけやすいと思います。

[ ]
RE:29767 【マクロ】タブモードでファイルNo.29768
いけ さん 11/04/23 10:33
 
こんにちは。

秀丸エディタの比較機能を使っても、やはりちょっと差が
ありすぎて皆目見当つきません。

そこで地道に設定リセットで調べてみることにしました。

「動作環境」−「ウィンドウ」の設定(ツールバーとかタブモード
の設定が見える画面)を開き、リセットを実行すると問題は解消
されたようです。

※リセットによってどこが変更されるかまでは調べてきれていません。

ただ、OKのPCとNGのPCとでは、タブモードの詳細設定で、
MDI風の操作が「確認する」にチェックが入っているか入って
いないかの差しかないように見えます。

マクロ動作OKのPC:チェック入っている
マクロ動作NGのPC:チェック外れている

ということで、リセットではなく上記チェックを入れたり
外したりで試しましたがマクロ動作に変化はありません。

あくまでマクロ動作NGの解消には、「ウィンドウ」設定のリセット
が効いているようです。なぜ?

今のところ、ここまで検証を終えていますが、はたしてそれが
関係しているかどうかもよく分かりません。

また何か分かればご報告いたします。




[ ]
RE:29768 【マクロ】タブモードでファイルNo.29773
秀丸担当 さん 11/04/27 09:50
 

>「動作環境」−「ウィンドウ」の設定(ツールバーとかタブモード
>の設定が見える画面)を開き、リセットを実行すると問題は解消
>されたようです。

詳しい内容ありがとうございます。
原因がわかりました。

poppasteがうまくいっていないことが原因でした。
poppasteは常駐秀丸エディタとクリップボード履歴がONのときに、履歴戻しもす
る文ですが、常駐秀丸エディタが無いときはただのpasteと同じになるはずが、
そこにバグがありうまくいっていませんでした。

とりあえず今回のマクロではpoppasteをpasteにするといいと思います。

ウィンドウの設定をリセットするとうまくいくのは、タブモードがOFFになるた
めのようです。
タブモードがONのとき、外枠のウィンドウが常駐秀丸エディタと同じプロセスに
なるのですが、その関係でタブモードがONのとき失敗していました。
タブモードON、常駐OFF、クリップボード履歴ON、という設定の組み合わせで、
常駐があってクリップボード履歴も有効と判断されてうまくいっていませんでし
た。
常駐秀丸エディタをONにするか、設定上のクリップボード履歴をOFFにしても回
避できるかもしれません。

V8.10β2で修正させていただきます。

[ ]
RE:29773 【マクロ】タブモードでファイルNo.29774
Iranoan さん 11/04/27 16:15
 
 秀丸担当さん今日は、一ユーザの Iranoan です。
> poppasteは常駐秀丸エディタとクリップボード履歴がONのときに、履歴戻しもす
> る文ですが、常駐秀丸エディタが無いときはただのpasteと同じになるはずが、
> そこにバグがありうまくいっていませんでした。
 履歴を使っている場合、クリップボードを使っているとどんどんストックし
ていってしまうので、poppaste を使ったのですが、裏目に出ていたのですね(^^;。

[ ]
RE:29773 【マクロ】タブモードでファイルNo.29778
いけ さん 11/05/01 21:55
 
こんばんわ。

pasteにすることで動作するようになったことを確認しました。

ありがとうございました。

バグだったのですね。
バグ発見に貢献?できて光栄です。

今後とも宜しくお願い致します。

[ ]