メールのテキスト保存をマクロで実行するNo.44251
Y.T さん 13/04/03 09:02
 
いつもお世話になっております.

メールのテキスト保存を実行する作業のマクロ化についておたずねします.

@受信メールを閲覧しているウィンドウで,「ファイル」→「名前を付けて保
 存」でメールを保存すると,保存されたメールのヘッダー情報は,自信で表
 示設定したヘッダーだけが保存されます.

これに対し,

A一覧でメールを選択した状態で「ファイル」→「エクスポート」でメールを
 保存すると,すべてのヘッダー情報も保存されます.

目的は@の作業について,「Mail20130403.txt」のような日付を使ったファイ
ル名で保存することで,これをマクロで実行しようと考え,
 dllfunc("Export", $ファイル名, "mbox", "noencode")
で出力しようとしたのですが,後者の作業になってしまい,また,メールを閲
覧しているウィンドウから実行すると,
---
TKINFO.DLL:エディタ上で実行できないTKInfo.dll呼び出しが行われました.
関数コード=120
---
というエラーが出てしまいます.

Export はそもそも本体の方でしか実行できず,また,Aの作業と同じことを
行う命令だと解釈しました.

…となりますと,@を実行するにはどのような手がありますでしょうか.

アドバイス等いただければ幸いです.
よろしくお願い申し上げます.

[ ]
RE:44251 メールのテキスト保存をマクロでNo.44256
秀まるお2 さん 13/04/03 11:52
 
 現在表示してる内容をそのまま保存するなら、例えば

    loaddll "tkinfo.dll";
    $date = dllfuncstr("CurrentDate", "YYYYMMDD");
    $file = "e:\\temp\\Mail" + $date + ".txt";
    saveas $file;

 のようなマクロになります。

 メール本文のみにしたいなら、

    loaddll "tkinfo.dll";
    #headerview = dllfunc("HeaderView");
    if( #headerview != 0 ) {
        #n = dllfunc("SwitchHeaderView", 0);
    }
    $date = dllfuncstr("CurrentDate", "YYYYMMDD");
    $file = "e:\\temp\\Mail" + $date + ".txt";
    saveas $file;
    if( #headerview != 0 ) {
        #n = dllfunc("SwitchHeaderView", #headerview);
    }

 のようになります。上記マクロは「e:\temp」ってフォルダに保存する例なの
で、そこは適当に書き換える必要があります。

> TKINFO.DLL:エディタ上で実行できないTKInfo.dll呼び出しが行われました.
> 関数コード=120
> ---
> というエラーが出てしまいます.

 Export関数は、たしかに秀丸メール本体ウィンドウ上でないと実行出来ないで
す。エディタ上で実行したいなら、SyncしてからExecAtMain付きで呼び出す形に
なります。例えば

    loaddll "tkinfo.dll";
    if( ! dllfunc("IsHidemaruMailMain") ) {
        #n = dllfunc("Sync");
        #n = dllfunc("ExecAtMain", "Export", "e:\\temp\\temp.txt"
                    , "mbox", "noencode");
    } else {
        #n = dllfunc("Export", "e:\\temp\\temp.txt", "mbox", "noencode");
    }

 みたいになります。

[ ]
RE:44256 メールのテキスト保存をマクロでNo.44262
Y.T さん 13/04/03 22:44
 
ありがとうございました.
最初の,

> 現在表示してる内容をそのまま保存するなら、例えば
>
>    loaddll "tkinfo.dll";
>    $date = dllfuncstr("CurrentDate", "YYYYMMDD");
>    $file = "e:\\temp\\Mail" + $date + ".txt";
>    saveas $file;
>
> のようなマクロになります。

ですんなりといきました.これですとエディタウィンドウからも,
本体の一覧画面からも対応できました.

既にファイルが存在した場合に上書きするか否かの判断を追加しようと考えましたが,
秀丸メールのマクロからは「openfile」でファイルの存在を確かめることはできない
という認識で良いでしょうか.

私が秀丸エディタと秀丸メールのマクロの違いを理解していないために,
おかしな質問でしたらご容赦ください.

[ ]
RE:44262 メールのテキスト保存をマクロでNo.44263
秀まるお2 さん 13/04/04 10:32
 
 サイト−企画の斉藤秀夫と申します。

> ありがとうございました.
> 最初の,
>
> > 現在表示してる内容をそのまま保存するなら、例えば
> >
> >    loaddll "tkinfo.dll";
> >    $date = dllfuncstr("CurrentDate", "YYYYMMDD");
> >    $file = "e:\\temp\\Mail" + $date + ".txt";
> >    saveas $file;
> >
> > のようなマクロになります。
>
> ですんなりといきました.これですとエディタウィンドウからも,
> 本体の一覧画面からも対応できました.
>
> 既にファイルが存在した場合に上書きするか否かの判断を追加しようと考えました
>が,
> 秀丸メールのマクロからは「openfile」でファイルの存在を確かめることはできない
> という認識で良いでしょうか.

 秀丸マクロにexistfileって関数があって、それを使えば確認出来ます。

例:

   loaddll "tkinfo.dll";
   $date = dllfuncstr("CurrentDate", "YYYYMMDD");
   $file = "e:\\temp\\Mail" + $date + ".txt";
   if( existfile( $file ) ) {
       question "上書きしてもいいですか?";
       if( result == no ) {
           endmacro;
       }
   }
   saveas $file;

[ ]
RE:44263 メールのテキスト保存をマクロでNo.44265
Y.T さん 13/04/04 12:58
 
下記の例で解決いたしました.
まだまだ不勉強でご迷惑をおかけしました.
本当にありがとうございました.

> 秀丸マクロにexistfileって関数があって、それを使えば確認出来ます。
>
>例:
>
>   loaddll "tkinfo.dll";
>   $date = dllfuncstr("CurrentDate", "YYYYMMDD");
>   $file = "e:\\temp\\Mail" + $date + ".txt";
>   if( existfile( $file ) ) {
>       question "上書きしてもいいですか?";
>       if( result == no ) {
>           endmacro;
>       }
>   }
>   saveas $file;

[ ]