[質問] アドレス帳の名前を表示するようにNo.29442
Panda さん 06/12/11 11:05
 
 Pandaです。

メールを受信したときに To:名前 <メールアドレス>
となっていますが、この時の"名前"を本人が設定している物ではなく、
私がアドレス帳に登録している物で表示するようにしたいのですが、
どうすれば出来るでしょうか?

なお、メールの件名一覧の所ではアドレス帳の名前が出ています。

[ ]
RE:29442 [質問] アドレス帳の名前を表示No.29448
秀まるお2 さん 06/12/11 13:02
 
 メール内容表示の中ではアドレス帳上の名前を表示することは出来ないです。
あそこはあくまで、送られてきたメールの内容そのままで表示されます。

 「全般的な設定・ウィンドウ」の「枠のタイトルバー...」で、メール内容枠
のタイトルバーを2行にする設定にしてやって、代わりにヘッダは非表示にする
というのも1つの手かと思います。

[ ]
RE:29448 [質問] アドレス帳の名前を表示No.29449
Panda さん 06/12/11 13:54
 
 Pandaです。

秀丸さん、マクロを書けない自分が言うのも何なのですが、
受信後にマクロで書き換えると言うことは出来ないのでしょうか?
もし可能なようであればマクロも是非お願いしたいです。

B5サイズのノートで広々とは使えない状況です・・・

[ ]
RE:29449 [質問] アドレス帳の名前を表示No.29458
秀まるお2 さん 06/12/12 09:26
 
 狭いからという理由なのは、もしかして、「名前+Email」の表示を名前だけに
したいとかって話ですかね。だとしたら、そのように変換してしまったら、今度
はメール一覧の表示がうまくいかなくなったり、返信出来なくなったりします。

 あくまでメールの中の名前部分をアドレス帳上の名前に変換したいってことで
したら、マクロはこのようになります。

    loaddll "tkinfo.dll";
    #count = dllfunc("SelectedMailCount");
    if( #count == 0 ) {
        endmacro;
    }
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        call ConvertOneMail;
    }
    #n = dllfunc("UnlockSelection", 1);
    endmacro;

ConvertOneMail:
    ##updated = 0;
    call ConvertHeader "From", ##updated;
    if( ##return ) {
        ##updated = 1;
    }
    call ConvertHeader "To", ##updated;
    if( ##return ) {
        ##updated = 1;
    }
    call ConvertHeader "Cc", ##updated;
    if( ##return ) {
        ##updated = 1;
    }
    if( ##updated ) {
        ##altered = dllfunc("GetMailFlag", "altered");
        ##n = dllfunc("SaveEditMail", 0, 0);
        if( ##altered == 0 ) {
            ##n = dllfunc("SetMailFlag", "altered", 0);
        }
    }
    return;

ConvertHeader:
    ##c = dllfunc("CountCurrentHeader", $$1);
    ##i = 0;
    ##updated = ##2;
    while( ##i < ##c ) {
        $s = dllfuncstr("CurrentHeader2", $$1, ##i);
        call ConvertByBook $s;
        if( $$return != $s ) {
            if( ##updated == 0 ) {
                ##updated = 1;
                ##n = dllfunc("BeginEditMail");
            }
            ##n = dllfunc("SetHeader2", $$1, $$return, ##i);
        }
        ##i = ##i + 1;
    }
    return ##updated;

ConvertByBook:
    ##c = dllfunc("CountEmailList", $$1);
    ##i = 0;
    $$ret = "";
    while( ##i < ##c ) {
        $$one = dllfuncstr("GetEmailList", $$1, ##i);
        $$one = dllfuncstr("FindBook3", $$one);
        $$ret = $$ret + $$one;
        ##i = ##i + 1;
        if( ##i < ##c ) {
            $$ret = $$ret + ", ";
        }
    }
    return $$ret;

[ ]
RE:29458 [質問] アドレス帳の名前を表示No.29463
Panda さん 06/12/12 15:01
 
 Pandaです。

秀丸さん、マクロありがとうございました。
自動起動マクロの複数実行のマクロを使って、今回の
マクロを活用したいと考えています。

希望していたとおりのマクロでしたので、
これでまた一段と使いやすくなります。

お願いばかりで恐縮なのですが、受信済みの全メールに対して
本マクロを実行したいのですが、その場合はどうすればよろしいでしょうか?

[ ]
RE:29458 [質問] アドレス帳の名前を表示No.29484
秀まるお2 さん 06/12/13 12:58
 
 最初の部分を直せばいいです。

    loaddll "tkinfo.dll";
    while( dllfunc("SelectRecvMail") ) {
        call ConvertOneMail;
    }
    endmacro;

 でいいと思います。

[ ]
RE:29484 [質問] アドレス帳の名前を表示No.29487
Panda さん 06/12/13 15:29
 
 Pandaです。

さっそくマクロを実行いたしましたが、
以下のエラーが表示されてしまいました。

”ブロックの対応が合いません”
 
最初の4行をそのまま書き換えたのですが、
何かやり方を間違えているのでしょうか・・・

[ ]
RE:29487 [質問] アドレス帳の名前を表示No.29492
秀まるお2 さん 06/12/13 16:50
 
 最初の部分というのは、loaddllしてからendmacroするまでの間の所です。

[ ]
RE:29458 [質問] アドレス帳の名前を表示No.29521
Panda さん 06/12/15 10:48
 
 Pandaです。

秀丸さん、先日はマクロを作成していただきまして
ありがとうございました。 あれから便利にマクロを使わせて
頂いているのですが、一点問題があります。

それは複数のメールを同時に受信すると最初の一通目のみに対して
マクロが働いてTo: "名前" の部分を書き換えてくれるのですが、
2通目以降は名前の書き換えがされません。

もし可能であれば先日書いていただいたマクロの
修正をお願いできないでしょうか?

宜しくお願い致します。

[ ]
RE:29521 [質問] アドレス帳の名前を表示No.29523
Panda さん 06/12/15 11:05
 
  Pandaです。

自己レスです。

今、自分でマクロの修正を頑張ってみたいと思ってます。
ですから秀丸さん、レス不要です。 投稿の消し方が分からないので、
ここに書き込んでしまいます。

どうしても出来なかったら週明けに改めて質問します。
その時は宜しくします。

連続投稿すみませんでした。

[ ]
RE:29523 [質問] アドレス帳の名前を表示No.29526
秀まるお2 さん 06/12/15 13:48
 
 原因はよく分かりませんけど、とりあえず、マクロの先頭部分(loaddllから
endmacroまでの部分)を、

    loaddll "tkinfo.dll";
    while( dllfunc("SelectRecvMail") ) {
        message dllfuncstr("CurrentHeader","Subject")
              + " のメールを処理します。";
        call ConvertOneMail;
    }
    message "マクロ終了";
    endmacro;

 みたいな風に改造してみて、たしかに1通づつ処理されるかどうか確認したら
いいんじゃないかと思います。

[ ]