マクロでメールの内容(一部)をテキストNo.26112
とね さん 06/01/27 10:01
 
秀まるお様、こんにちは〜
秀丸メールには毎日大変お世話になっております。

さて、仕事で利用しているのですが、問い合わせメールの内容をテキスト
ファイルとして書き出したいのですが、秀丸エディタでは出来たのですが
秀丸メールではどのようにしたらよいのか判りませんでした。お忙しいところ
申し訳ございませんが、ご指導よろしくお願い申し上げます。

メールの本文
---------------------------------------------------------------------

<@homepage mail>
Name:
Address:xxxxxxxx@xxxx.co.jp
Subject:問い合わせフォーム

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

会社名   :XXXXXXXXXXX
部署名   :XXXXXXXX
名前    :XXXXXX
氏名ふりがな:XXXXXXXX
郵便番号  :XXXXXXXXXX
住所    :XXXXXXXXXX
電話番号  :XXXXXXXX
ファックス :XXXXXXXX
URL   :XXXXXX

---------------------------------------------------------------------

書き出したい内容
---------------------------------------------------------------------
会社名   :XXXXXXXXXXX
部署名   :XXXXXXXX
名前    :XXXXXX
氏名ふりがな:XXXXXXXX
郵便番号  :XXXXXXXXXX
住所    :XXXXXXXXXX
電話番号  :XXXXXXXX
ファックス :XXXXXXXX
URL   :XXXXXX
---------------------------------------------------------------------

秀丸エディタ用自作マクロ
---------------------------------------------------------------------
gofiletop;
searchdown "^会社名", regular;
if( result ) {
$a = gettext( 0, y, linelen, y );
}
searchdown "^部署名", regular;
if( result ) {
$b = gettext( 0, y, linelen, y );
}
searchdown "^名前", regular;
if( result ) {
$c = gettext( 0, y, linelen, y );
}
searchdown "^氏名ふりがな:", regular;
if( result ) {
$d = gettext( 0, y, linelen, y );
}
searchdown "^郵便番号", regular;
if( result ) {
$e = gettext( 0, y, linelen, y );
}
searchdown "^住所", regular;
if( result ) {
$f = gettext( 0, y, linelen, y );
}
searchdown "^電話番号", regular;
if( result ) {
$g = gettext( 0, y, linelen, y );
}
searchdown "^ファックス", regular;
if( result ) {
$h = gettext( 0, y, linelen, y );
}
searchdown "^URL", regular;
if( result ) {
$i = gettext( 0, y, linelen, y );
}
openfile "D:\K3\JUSHO.TXT";
selectall;
cut;
insert $a;
insert "\n";
insert $b;
insert "\n";
insert $c;
insert "\n";
insert $d;
insert "\n";
insert $e;
insert "\n";
insert $f;
insert "\n";
insert $g;
insert "\n";
insert $h;
insert "\n";
insert $i;
insert "\n";
saveexitall;
endmacro;
---------------------------------------------------------------------

[ ]
RE:26112 マクロでメールの内容(一部)をNo.26114
たけのこ さん 06/01/27 10:16
 
こんにちは、たけのこです。

マクロのヘルプに、「秀丸メールと秀丸エディタとのマクロ動作の違い」という
トピックがあるので、そこを参照すれば解決すると思います。ぱっと見た感じで、
openfileから先が失敗しているんでは? openfileもきちんとそのトピックに
載っています。

では! (^v^)/~

[ ]
RE:26114 マクロでメールの内容(一部)をNo.26115
とね さん 06/01/27 11:54
 
 たけのこさん、こんにちは〜きもとです。

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

 openfileのトピックを読みましたが、いまいちピンと来ませんでした。

 希望としては秀丸メールのエディタ画面でマクロを実行してテキストに
 書き出せると楽なのですが・・・・・

 とりあえず、秀丸メールマクロのエキスポートコマンドでメールを丸ごと
 テキストで書き出すことにしました。余分なところはその先のデータベース
 ソフトで処理することで問題なかったので、良しとします。

 きもと
 

[ ]
RE:26115 マクロでメールの内容(一部)をNo.26116
たけのこ さん 06/01/27 13:56
 
こんにちは、たけのこです。

openfile文の行の前に
run "\"" + hidemarudir + "\\hidemaru.exe\" /xpastemailinfo.mac"
などを挿入します。んで、マクロのopenfileから先をカットし、保存します。

んで、pastemailinfo.mac内にopenfileから先にさっきカットしたのをペースト
し、保存します。

どうでしょ(空で組んでいるので、試してません)?

では! (^v^)/~

[ ]
RE:26116 マクロでメールの内容(一部)をNo.26117
秀まるお2 さん 06/01/27 16:48
 
 run文を使って秀丸エディタを呼び出すのがいいと思いますが、簡単な整形だ
けなら、「新規メール」のエディタ上でなんとかする手もあります。

openfile "D:\K3\JUSHO.TXT";

 以降の部分を、

#n = dllfunc("NewMail");
#n = dllfunc("SwitchHeaderView", 0 );
gofiletop;
beginsel;
gofileend;
delete;
insertfile "D:\\K3\\JUSHO.TXT";
selectall;
cut;
insert $a;
insert "\n";
insert $b;
insert "\n";
insert $c;
insert "\n";
insert $d;
insert "\n";
insert $e;
insert "\n";
insert $f;
insert "\n";
insert $g;
insert "\n";
insert $h;
insert "\n";
insert $i;
insert "\n";
saveas "D:\\K3\\JUSHO.TXT";
quit;


 ってな感じですけど。

[ ]
RE:26116 マクロでメールの内容(一部)をNo.26119
とね さん 06/01/27 19:23
 
 たけのこさん、きもとです。

 ご指導ありがとうございます。

 しかしながら、実際に実行してみたところ、改行だけの
 ファイルしか生成されませんでした。(i_i)
 
 どこが悪いのか思いつきませんので、これから秀まるおさんの
 マクロをテストしてみます。

>こんにちは、たけのこです。
>
>openfile文の行の前に
>run "\"" + hidemarudir + "\\hidemaru.exe\" /xpastemailinfo.mac"
>などを挿入します。んで、マクロのopenfileから先をカットし、保存します。
>
>んで、pastemailinfo.mac内にopenfileから先にさっきカットしたのをペースト
>し、保存します。
>
>どうでしょ(空で組んでいるので、試してません)?
>
>では! (^v^)/~

[ ]
RE:26119 マクロでメールの内容(一部)をNo.26120
山紫水明 さん 06/01/27 19:55
 
 とねさん,

> どこが悪いのか思いつきませんので、

 マクロ相互間では変数の受け渡しはできないということではないでしょうか。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:26117 マクロでメールの内容(一部)をNo.26121
とね さん 06/01/27 19:57
 
 秀まるお様、こんばんは〜きもとです。

 ご指導ありがとうございます。
 
 早速やってみましたところ、うまく書き出すことに成功しました。
 ただ、d:\k3\jusho.txt が存在しないときはエラーになりましたので
 とりあえず、手動で作っておくことで解決しました。

 もう一つ、やりたいことが出来たのですが、郵便番号と、電話番号と
 ファックス番号が全角文字で入ることがありますので、これを半角文字に
 変換する場合はどのように記述したらよいのでしょうか?
 ((tohankakuの使い方が判りませんでした。))

 よろしくお願い申し上げます。
 
---------------------------------------------------------------------
loaddll "tkinfo.dll";
if( !dllfunc("IsTuruKameMain") ) {
    message "このマクロは本体画面上で実行してください。";
    endmacro;
}
gofiletop;
 searchdown "^会社名", regular;
 if( result ) {
 $a = gettext( 0, y, linelen, y );
 }
 searchdown "^部署名", regular;
 if( result ) {
 $b = gettext( 0, y, linelen, y );
 }
 searchdown "^名前", regular;
 if( result ) {
 $c = gettext( 0, y, linelen, y );
 }
 searchdown "^氏名ふりがな:", regular;
 if( result ) {
 $d = gettext( 0, y, linelen, y );
 }
 searchdown "^郵便番号", regular;
 if( result ) {
 $e = gettext( 0, y, linelen, y );
 }
 searchdown "^住所", regular;
 if( result ) {
 $f = gettext( 0, y, linelen, y );
 }
 searchdown "^電話番号", regular;
 if( result ) {
 $g = gettext( 0, y, linelen, y );
 }
 searchdown "^ファックス", regular;
 if( result ) {
 $h = gettext( 0, y, linelen, y );
 }
 searchdown "^URL", regular;
 if( result ) {
 $i = gettext( 0, y, linelen, y );
 }

 #n = dllfunc("NewMail");
 #n = dllfunc("SwitchHeaderView", 0 );

gofiletop;
 beginsel;
 gofileend;
 delete;
 insertfile "D:\\K3\\JUSHO.TXT";
 selectall;
 cut;
  insert $a;
  insert "\n";
  insert $b;
  insert "\n";
  insert $c;
  insert "\n";
  insert $d;
  insert "\n";
  insert $e;
  insert "\n";
  insert $f;
  insert "\n";
  insert $g;
  insert "\n";
  insert $h;
  insert "\n";
  insert $i;
  insert "\n";
 saveas "D:\\K3\\JUSHO.TXT";
quit;

[ ]
RE:26121 マクロでメールの内容(一部)をNo.26122
山紫水明 さん 06/01/27 20:39
 
 とねさん,

> ただ、d:\k3\jusho.txt が存在しないときはエラーになりましたので

 マクロ中の
> insertfile "D:\\K3\\JUSHO.TXT";
> selectall;
> cut;
の3行を消してみたらどうでしょう。

> もう一つ、やりたいことが出来たのですが、郵便番号と、電話番号と
> ファックス番号が全角文字で入ることがありますので、これを半角文字に
> 変換する場合はどのように記述したらよいのでしょうか?
> ((tohankakuの使い方が判りませんでした。))

saveas "D:\\K3\\JUSHO.TXT";
の直前に

selectall;
tohankaku;

の2行を挿入してみたらどうでしょう。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:26122 マクロでメールの内容(一部)をNo.26123
とね さん 06/01/27 22:03
 
 山紫水明さん、こんばんは〜きもとです。

>> insertfile "D:\\K3\\JUSHO.TXT";
>> selectall;
>> cut;
>の3行を消してみたらどうでしょう。

 ありがとうございます。
 jusho.txtがある無いにかかわらず、エラーは出なくなりました。

>saveas "D:\\K3\\JUSHO.TXT";
>の直前に
>
>selectall;
>tohankaku;
>
>の2行を挿入してみたらどうでしょう。

 こちらは、電話、ファックス、郵便番号以外は変換しては困りますので
 selectallでは、他の部分も変換されるため問題がありました。
 
 変数 $e $g $h の中身だけ変換することは出来ないのでしょうか?
 
 よろしくお願い申し上げます。

[ ]
RE:26123 マクロでメールの内容(一部)をNo.26124
山紫水明 さん 06/01/27 22:32
 
 とねさん,

> 変数 $e $g $h の中身だけ変換することは出来ないのでしょうか?

 文字列の中身を直接半角に変換するには田楽DLLなどを使えばできます。
 あるいは,次のような方法でもできると思います。

gofiletop;
searchdown "^郵便番号", regular;
selectline;
tohankaku;
searchdown "^電話番号", regular;
selectline;
tohankaku;
searchdown "^ファックス", regular;
moveto foundendx, y;
beginsel;
golineend;
tohankaku;

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:26124 マクロでメールの内容(一部)をNo.26125
とね さん 06/01/27 23:18
 
 山紫水明さん、こんばんは〜きもとです。

 早速ありがとうございます。

 ご指導どおりマクロに追加しましたところ、無事希望の行だけ
 半角になりました。(^_-)

 今度は田楽DLLを勉強しまして、数字だけ変換するように
 がんばりたいと思います。
 
 ありがとうございました。

[ ]
RE:26125 マクロでメールの内容(一部)をNo.26126
Iranoan さん 06/01/28 13:23
 
 とねさん今日は、Iranoan です。
>  半角になりました。(^_-)
 効率は兎も角、半角への変換だけなら、マクロだけ出来ますよ。例えば、数
字だけなら $s が変換したい文字列だとすると、次のようにサブルーチンにし
ておくと後から使い回しやすいです。
$s = "0123456789";
call SuHankaku $s;
message $$return;
endmacro;

SuHankaku://取得文字列中の数字を半角にする
//$$1:変換対象となる文字列
  $$return=$$1;
  ##i = '0';
  ##j = '0';
  while( ##i <= '9' ){
    $$ZenChar=char( ##i );
    $$HanChar=char( ##j );
    call ChangeCharacter $$return,$$ZenChar,$$HanChar;
    ##i=##i+1;
    ##j=##j+1;
  }
  return $$return;

ChangeCharacter://buffer 中の文字列を置換
//$$1:buffer
//$$2:検索文字列
//$$3:置換文字列
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      ##long = strlen($$1);
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

[ ]
RE:26126 マクロでメールの内容(一部)をNo.26136
とね さん 06/01/29 16:29
 
 Iranoanさん、こんんちは〜きもとです。

 ありがとうございます。
 サブルーチンを組んで変換させることも出来るのですね。

 みなさん、すごいですね〜すぐこんなふうにマクロが
 出来るなんて。

 今回はとても勉強になりました。ありがとうございました。

[ ]