振分けた受信ホルダごとの添付ファイルのNo.09351
gomapin2022 さん 22/03/13 13:38
 
お世話になります。
No.07586にて、受信メールに添付されたファイルを自動的に
決まったフォルダに保存することは出来ないでしょうか?
に関連するような事柄なんですが

私は毎日1MB程度の添付ファイル付メールを何十通も受信しております。

受信終了後、受信フォルダの下に、振り分けた受信フォルダ(の文字列)ごとに添付
ファイルがあれば、予め決めておいたフォルダに添付ファイルを自動的に保存するマ
クロの例など教えて頂けないでしょうか、
作成時のヒントだけでもありがたいです。

ひと月程前から秀丸メールを使い始めマクロの便利さを感じております。
秀丸のマクロに関する書類をいくつか購入し独学中ですが、
いかんせん未だ未だ初心者で恐縮です。

よろしくお願い申し上げます。

[ ]
RE:09351 振分けた受信ホルダごとの添付フNo.09352
gomapin2022 さん 22/03/13 14:13
 
一部、書きたらずで申し訳ありません。※部分補足させて頂きます。

>お世話になります。
>No.07586にて、受信メールに添付されたファイルを自動的に
>決まったフォルダに保存することは出来ないでしょうか?
>に関連するような事柄なんですが
>
>私は毎日1MB程度の添付ファイル付メールを何十通も受信しております。
>
>受信終了後、受信フォルダの下に、振り分けた受信フォルダ(の文字列)ごとに添
>付ファイルがあれば、予め決めておいたフォルダに添付ファイルを自動的に保存す
>るマクロの例など教えて頂けないでしょうか、
※この予め決めておいたフォルダとは一カ所ではなく、
予め決めておいた複数のフォルダです。

>作成時のヒントだけでもありがたいです。
>
>ひと月程前から秀丸メールを使い始めマクロの便利さを感じております。
>秀丸のマクロに関する書類をいくつか購入し独学中ですが、
>いかんせん未だ未だ初心者で恐縮です。
>
>よろしくお願い申し上げます。

[ ]
RE:09352 振分けた受信ホルダごとの添付フNo.09356
秀まるお2 さん 22/03/14 09:30
 
 僕が想像するにですが、例えば受信フォルダの配下にA,B,Cのようなフォルダが
あって、それぞれのフォルダにメールが振り分けられるとして、それぞれのフォルダ
に振り分けられたメールそれぞれの添付ファイルを、例えばAフォルダのメールなら


  C:\AttachFiles\A


 ってフォルダに保存したいとか、そういう感じなのでしょうか。つまり、受信フォ
ルダ配下にあるフォルダ名と「C:\AttachFiles」配下のフォルダ名が完全一致してる
ということなのか。

 それと、マクロを実行するタイミングも、受信が終わってから手作業で実行するつ
もりのなのか、それとも受信後に勝手に実行してほしいのかとか・・・。

[ ]
RE:09356 振分けた受信ホルダごとの添付フNo.09359
gomapin2022 さん 22/03/14 15:08
 
お世話になります。
御返信ありがとうございます。

当方の説明不足で恐縮です。
> 僕が想像するにですが、例えば受信フォルダの配下にA,B,Cのようなフォルダ
>があって、それぞれのフォルダにメールが振り分けられるとして、それぞれのフォ
>ルダに振り分けられたメールそれぞれの添付ファイルを、例えばAフォルダのメー
>ルなら
>
>
>  C:\AttachFiles\A
>
> ってフォルダに保存したいとか、そういう感じなのでしょうか。
↑全くご指摘の通りでございます。

>つまり、受信フォルダ配下にあるフォルダ名と「C:\AttachFiles」配下のフォルダ
>名が完全一致してるということなのか。
↑配下のA,B,Cのフォルダ毎に任意個別のフォルダ毎に添付ファイルが保存でき
ればありがたいです。
当方の要望では添付ファイルを保存したいA,B,Cフォルダと文字列が完全一致し
ている必要性はございません。
マクロ内で適宜、書き換えて使用できればとも思っております。
>
> それと、マクロを実行するタイミングも、受信が終わってから手作業で実行する
>つもりのなのか、それとも受信後に勝手に実行してほしいのかとか・・・。
↑これに関しましては受信終了後勝手に実行できれば大変ありがたいです。

よろしくお願いいたします。

※私事ですが、勤務先のパートさんから届くメールの添付ファイルを毎日手作業で仕
分けするのも大変で何とかならないかと苦戦しております。

[ ]
RE:09356 振分けた受信ホルダごとの添付フNo.09360
秀まるお2 さん 22/03/14 15:18
 
 僕の想像する例でマクロサンプル作ってみました。

 「C:\Data」ってフォルダだけあらかじめ作っておけば実行できます。そこを適当
に書き換えて実行してもらえばいいんじゃないかと思います。

 例えば受信フォルダにあるメールの添付ファイルは、「C:\Data」の配下に「受
信」ってフォルダが作成されて、そこに保存されます。

 「受信\A」ってフォルダがあると、「A」って名前のフォルダ配下に保存されます。

 そんなマクロにしてみました。

 message文はデバッグ用に入れてあります。実際に本番用で使うにはそこをコメン
トアウトします。

----------------------------------------------------------------------------
-------
    $destfolderbase = "c:\\data";
    loaddll "tkinfo.dll";
    $prevaccount = dllfuncstr("CurrentAccount");
    $prevfolder = dllfuncstr("CurrentFolder");
    while( dllfunc( "SelectRecvMail" ) ) {
        #count = dllfunc("CountCurrentHeader", "X-Attach");
        if( #count > 0 ) {
            #i = 0;
            while( #i < #count ) {
                $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);

                $src = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
+ "\\" + $attach;
                $basename = midstr( $attach, strrstr($attach, "\\") + 1 );

                #xPeriod = strrstr( $basename, "." );
                if( #xPeriod >= 0 ) {
                    $ext = midstr( $basename, #xPeriod );
                    $basename = leftstr( $basename, #xPeriod );
                } else {
                    $ext = "";
                }

                $emailfolder = dllfuncstr("CurrentFolder");
                #xYen = strrstr( $emailfolder, "\\" );
                if( #xYen >= 0 ) {
                    $emailfolder = midstr( $emailfolder, #xYen + 1 );
                }

                $destfolder = $destfolderbase + "\\" + $emailfolder;

                if( ! existfile( $destfolder ) ) {
                    #n = dllfunc("Bypass_CreateDirectory", $destfolder );
                }
                $dest = $destfolder + "\\" + $basename + $ext;
                #nLabel = 1;
                while( existfile($dest) ) {
                    #nLabel = #nLabel + 1;
                    $dest = $destfolder + "\\" + $basename + "(" + str(#nLab
el) + ")" + $ext;
                }

                message "$attach = " + $attach + "\n" +
                        "$basename = " + $basename + "\n" +
                        "$ext = " + $ext + "\n" +
                        "$emailfolder = " + $emailfolder + "\n" +
                        "$destfolder = " + $destfolder + "\n" +
                        "$dest = " + $dest;

                #n = dllfunc("Bypass_CopyFile", $src, $dest, 0 );
                #n = dllfunc("Bypass_SetFileAttributes", $dest, 0x20 );

                #i = #i + 1;
            }
        }
    }
    #n = dllfunc("SelectFolder", $prevaccount, $prevfolder);
----------------------------------------------------------------------------
-------

[ ]
RE:09359 振分けた受信ホルダごとの添付フNo.09361
秀まるお2 さん 22/03/14 15:20
 
 今入れ違いで書き込みしてしまいましたが、一応、期待したマクロとおおよそ合っ
てるような気がします。

 何か期待したのと違う点があれば、ご指摘お願いします。

[ ]
RE:09361 振分けた受信ホルダごとの添付フNo.09365
gomapin2022 さん 22/03/15 00:48
 
お世話になります。
ご回答ありがとうございます。

早速、サンプルマクロの動作を試させて頂きます。

> 今入れ違いで書き込みしてしまいましたが、一応、期待したマクロとおおよそ合
>ってるような気がします。
試験的に試させて頂きました。期待通りの動きで感激しております。
自身の職場等での必要に迫られて本を片手になんですが、
デバック用のmessageも入れて頂き初学者には勉強になります。

> 何か期待したのと違う点があれば、ご指摘お願いします。
とにかく数日(パートさんからの)連絡を受信して動作を拝見させて頂き勉強させて
頂きます、また投稿させて頂きます。

[ ]
RE:09361 振分けた受信ホルダごとの添付フNo.09430
gomapin2022 さん 22/03/29 23:52
 
お世話になります。

ご連絡が遅くなりすみません。

> 今入れ違いで書き込みしてしまいましたが、一応、期待したマクロとおおよそ合
>ってるような気がします。
>
> 何か期待したのと違う点があれば、ご指摘お願いします。

ご教示いただいてから、それなりに動作確認してみましたが当方の期待以上の動作で
感謝しております。
そもそも必要な添付ファイルは受信フォルダ内に振り分ける方が、何かと便利な事が
使わせて頂いて実感しました。
同じ添付ファイルの保存にしても語尾に(2)が付くので当方としては
更に助かっております。

これからもコツコツとマクロの勉強もさせて頂きます。
ありがとうございました。

[ ]
RE:09430 振分けた受信ホルダごとの添付フNo.09431
秀まるお2 さん 22/03/30 08:03
 
 お役に立ててよかったです。

 不明な点があれば、また聞いていただいて大丈夫です。

[ ]