メール一覧枠の表示内容の取得についてNo.08804
2Kasa さん 02/08/29 14:16
 
はじめまして。

鶴亀メールのみのユーザです。メール一覧枠に表示されている項目を、
一覧としてコピーをしたいのですが、既に問い合わせないしマクロな
どにございますでしょうか? 特定のフォルダにある件名や送信者名、
送受信日時などをExcelなどにコピー・整理をして管理できると便利
かなあと思っているのですが。ご教示いただけますと幸いです。

[ ]
RE:08804 メール一覧枠の表示内容の取得にNo.08806
たけのこ さん 02/08/29 15:20
 
たけのこです。

さほど検証していません(^^;
下記のマクロを実行後、completedって表示されるので、その後にエクセルに貼
り付けられるはずです。マクロの登録方法・実行方法などはヘルプをご覧くださ
い。


loaddll "TKInfo.dll";
// 一番上へ
#n = dllfunc("DisableDraw", 1);
#oldView = dllfunc("IsThreadView");
#n = dllfunc("SetThreadView", 0);
#oldIdx = dllfunc("MailIndex");
#n = dllfunc("SetMailIndex", 0);
// リストを作る
setclipboard "\"Subject\"\t\"From\"\t\"To\"\t\"Cc\"\t\"Date\"\n";
while(true){
  addclipboard "\"" + dllfuncstr("CurrentHeader", "Subject") + "\"\t";
  addclipboard "\"" + dllfuncstr("CurrentHeader", "From") + "\"\t";
  addclipboard "\"" + dllfuncstr("CurrentHeader", "To") + "\"\t";
  addclipboard "\"" + dllfuncstr("CurrentHeader", "Cc") + "\"\t";
  addclipboard "\"" + dllfuncstr("CurrentHeader", "Date") + "\"\n";
  if(dllfunc("NextPrevCustom", "", "next", "", "") == 0){
    break;
  }
}
#n = dllfunc("EnableDraw");
#n = dllfunc("SetMailIndex", #oldIdx);
#newView = dllfunc("SetThreadView", #oldView);
message "completed";

[ ]
RE:08804 メール一覧枠の表示内容の取得にNo.08808
秀まるお2 さん 02/08/29 15:36
 
 メール一覧枠の表示内容をテキストファイルなどに出力する機能は無いです。

 しいてやるならマクロでって話になると思います。かなり遅いと思いますけど、
できないよりはマシかと思います。また、表示されている内容そのままというの
は難しいです。

 仮に、Subject,From,Dateの3列だけ取得できればいいのなら、以下のマクロ
をお試しください。成功すれば「名前を付けて保存」のダイアログボックスが出
てくるので、そこで適当にテキストファイルに保存してエディタを終了すればい
いです。

-------------------------------------------
    loaddll "tkinfo.dll";
    #cMail = dllfunc("MailCount");
    #i = 0;
    #n = dllfunc("NewMail");
    gofiletop;
    beginsel;
    gofileend;
    delete;
    insert "Subject,From,Date\n";
    #n = dllfunc("SwitchHeaderView", 0);
    #editor = hidemaruhandle(0);
    #n = dllfunc("SetMainWndTop");
    while( #i < #cMail ) {
        if( ! dllfunc("SetMailIndex", #i) ) {
            break;
        }
        $out = $out + "\t" + dllfuncstr("CurrentHeader", "Subject") +
                "\t\t" + dllfuncstr("CurrentHeader", "From") +
                "\t\t" + dllfuncstr("CurrentHeader", "Date") + "\t\n";
        if( strlen($out) >= 7000 ) {
            setactivehidemaru #editor;
            insert $out;
            $out = "";
            #n = dllfunc("SetMainWndTop");
        }
        #i = #i + 1;
    }
    setactivehidemaru #editor;
    if( $out != "" ) {
        insert $out;
    }
    replaceallfast "\"", "\"\"";
    replaceallfast "\\t\\f[^\\t]*,[^\\t]*\\f\\t", "\\t\"\\1\"\\t",
regular;
    replaceallfast "^\\t", "", regular;
    replaceallfast "\\t$", "", regular;
    replaceallfast "\\t+", ",", regular;
    SAVEAS;

[ ]
RE:08806 メール一覧枠の表示内容の取得にNo.08809
秀まるお2 さん 02/08/29 15:39
 
 をを、僕の方が遅かった(^^;

 無理矢理CSV形式に変換するよりも、Excelに貼り付けした方がいいですね。

 (addclipboardも便利だし)

[ ]
RE:08809 メール一覧枠の表示内容の取得にNo.08811
2Kasa さん 02/08/30 00:10
 
たけのこさま、秀まるお2さま

早々にマクロを作成いただき、ありがとうございましたm(__)m
さっそく登録させていただきました。取得されるDateが、yy/mm/dd
で表示できるともっとうれしいのですが、少しマクロヘルプで
勉強いたしますです(^^;

歯が立たなかったら、再度泣きつくと思いますので、その節には
よろしくお願いいたします。本当にありがとうございました!!

[ ]
RE:08811 メール一覧枠の表示内容の取得にNo.08814
秀まるお2 さん 02/08/30 17:05
 
>さっそく登録させていただきました。取得されるDateが、yy/mm/dd
>で表示できるともっとうれしいのですが

 すでにお気づきかもしれませんが念のため書いておくと、FormatDateという関
数があります。

    dllfuncstr("CurrentHeader", "Date")

 の所を

    dllfuncstr("FormatDate",
               dllfuncstr("CurrentHeader, "Date"), "YY/MM/DD"))

 のようにすればいいです。

[ ]
RE:08814 メール一覧枠の表示内容の取得にNo.08815
2Kasa さん 02/08/30 18:02
 
ありがとうございましたm(_ _)m

さっそく試してみます。わからなかったら、また書き込み
させていただきます。

これからもどうぞよろしくお願いいたします。

[ ]