HTMLメールの添付ファイルの名前No.12277
秀丸20年 さん 24/02/04 18:56
 
22年07月25日〜 26日にHTMLメールの添付ファイルの名前を変更してメモリに複数保
存できるかどうか質問しました。秀まるお様に、マクロを作っていただきました。
 保存されるファイル名は、
  index.htm
    index(2).htm
    index(3).htm
で保存できています。
ここから質問です。

ファイルが複数の場合 番号を 51 52 53 として 以下
 001 年号 月 日にち 問診票 index.htm

51~001~2019_11_20~問診票~index.htm
52~001~2019_11_20~問診票~index.htm
53~001~2019_11_20~問診票~index.htm

というファイル名にする事はマクロで出来るのでしょうか?

----以前 作っていただいたマクロ----

 

22/07/25 26日

HTMLメールの添付ファイルの名前

G:\に保存するように直してみました。

 保存されるファイル名は、単純に

    index.htm
    index(2).htm
    index(3).htm

 みたいな感じにしました。

--------------------------------------------------------------------
    loaddll "tkinfo.dll";
    #n = dllfunc("SetJapaneseCodePageMode", 1);
    $htmlfile = dllfuncstr("CurrentHeader", "X-Html");
    if( $htmlfile == "" ) {
        message "X-Html:ヘッダがありません。たぶんこのメールはHTMLメールでは
ありません。";
        endmacro;
    }

    //出力ファイルの名前を先に決める。
    $outfile = "G:\\index.htm";
    if( existfile( $outfile ) ) {
        #dup = 2;
        while(1) {
            $outfile = "G:\\index(" + str(#dup) + ").htm";
            if( !existfile( $outfile ) ) {
                break;
            }
            #dup = #dup + 1;
        }
    }

    $htmlfile = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\"
+ $htmlfile;
    $body = dllfuncstr("LoadStringFromFile", $htmlfile);
    if( $body == "" ) {
        message "HTMLメールの中身が空っぽか、または読み込みできませんでした。";
        endmacro;
    }
    loaddll "hmjre.dll";
    #utf8 = dllfunc("FindRegularNoCaseSense", "<meta[^>]*?charset=utf-8[^>]
*?>", $body, 0);
    if( #utf8 >= 0 ) {
        loaddll "tkinfo.dll";
        #n = dllfunc("NewMail");
        #n = dllfunc("SwitchHeaderView", 0);
        gofiletop;
        beginsel;
        gofileend;
        delete;
        insert "<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; chars
et=shift-jis\">\n";
        insertfile $htmlfile, utf8;
        setcompatiblemode 0x00000200;
        searchdown "<meta[^>]*?charset=utf-8[^>]*?>", regular, nocasesense;
        if( result ) {
            delete;
        }
        saveas $outfile, sjis;
        #handle = hidemaruhandle(0);
        setactivehidemaru dllfunc("MainWnd");
        closehidemaruforced #handle;
        message "utf-8からShift-JISに変換して " + $outfile + " に保存しまし
た。";
    } else {
        loaddll "tkinfo.dll";
        #n = dllfunc("SaveStringToFile", $outfile, $body, 0, 0 );
        if( #n == 0 ) {
            message "ファイルの保存に失敗しました。出力ファイル = " + $outfile;
            endmacro;
        }
        message "HTMLメールの内容を " + $outfile + " に保存しました。";
    }

---ここまで--------------

[ ]
RE:12277 HTMLメールの添付ファイルの名前No.12279
秀まるお2 さん 24/02/05 09:40
 
 ご希望の動作通りかどうかちょっと自信が無いですが、一応いかのようなマクロに
なりました。「//出力ファイルの名前を先に決める。」の辺りを直してるだけになり
ます。

 もしかして番号はずっと歴代で(1日毎に1に戻るんじゃない風に)カウントアッ
プしていきたいってことなら、そういう風に直すことも一応できます。

----------------------------------------------------------------------------
-------
    loaddll "tkinfo.dll";
    #n = dllfunc("SetJapaneseCodePageMode", 1);
    $htmlfile = dllfuncstr("CurrentHeader", "X-Html");
    if( $htmlfile == "" ) {
        message "X-Html:ヘッダがありません。たぶんこのメールはHTMLメールでは
ありません。";
        endmacro;
    }

    //出力ファイルの名前を先に決める。
    #dup = 1;
    while(1) {
        $outfile = "G:\\" + str(#dup) + "~001~" + dllfuncstr("CurrentDate",
"YYYY_MM_DD") + "~問診票~index.htm";
        if( !existfile( $outfile ) ) {
            break;
        }
        #dup = #dup + 1;
    }

    $htmlfile = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\"+
 $htmlfile;
    $body = dllfuncstr("LoadStringFromFile", $htmlfile);
    if( $body == "" ) {
        message "HTMLメールの中身が空っぽか、または読み込みできませんでした。";
        endmacro;
    }
    loaddll "hmjre.dll";
    #utf8 = dllfunc("FindRegularNoCaseSense", "<meta[^>]*?charset=utf-8[^>]
*?>", $body, 0);
    if( #utf8 >= 0 ) {
        loaddll "tkinfo.dll";
        #n = dllfunc("NewMail");
        #n = dllfunc("SwitchHeaderView", 0);
        gofiletop;
        beginsel;
        gofileend;
        delete;
        insert "<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; chars
et=shift-jis\">\n";
        insertfile $htmlfile, utf8;
        setcompatiblemode 0x00000200;
        searchdown "<meta[^>]*?charset=utf-8[^>]*?>", regular, nocasesense;
        if( result ) {
            delete;
        }
        saveas $outfile, sjis;
        #handle = hidemaruhandle(0);
        setactivehidemaru dllfunc("MainWnd");
        closehidemaruforced #handle;
        message "utf-8からShift-JISに変換して " + $outfile + " に保存しまし
た。";
    } else {
        loaddll "tkinfo.dll";
        #n = dllfunc("SaveStringToFile", $outfile, $body, 0, 0 );
        if( #n == 0 ) {
            message "ファイルの保存に失敗しました。出力ファイル = " + $outfile;
            endmacro;
        }
        message "HTMLメールの内容を " + $outfile + " に保存しました。";
    }

[ ]
RE:12279 HTMLメールの添付ファイルの名前No.12285
秀丸20年 さん 24/02/05 15:41
 
秀まるお様 有り難うございます。

5万から初めて、1加算で、index がRSB の名前で出来るでしょうか?

50001~001~2019_11_20~問診票~RSB.htm


> ご希望の動作通りかどうかちょっと自信が無いですが、一応いかのようなマクロ
>になりました。「//出力ファイルの名前を先に決める。」の辺りを直してるだけに
>なります。
>
> もしかして番号はずっと歴代で(1日毎に1に戻るんじゃない風に)カウントアッ
>プしていきたいってことなら、そういう風に直すことも一応できます。

[ ]
RE:12285 HTMLメールの添付ファイルの名前No.12287
秀まるお2 さん 24/02/05 18:03
 
 5万から始めるのは、マクロの中の

    #dup = 1;

 の所を単純に

    #dup = 50000;

 にしたらいいかと思います。

    50001~001~2019_11_20~問診票~RSB.htm

 なら、

        $outfile = "G:\\" + str(#dup) + "~001~" + dllfuncstr("CurrentDate",
"YYYY_MM_DD") + "~問診票~index.htm";

 の所を

        $outfile = "G:\\" + str(#dup) + "~001~" + dllfuncstr("CurrentDate",
"YYYY_MM_DD") + "~問診票~RSB.htm";


 のようにすればいいと思います。

 日にちが変わってもずっとシリアルナンバー的に番号をカウントアップさせたい場
合は、前回の値をレジストリかiniファイルかどこかに保存しておくような処理が必
要になります。

[ ]
RE:12287 HTMLメールの添付ファイルの名前No.12289
秀丸20年 さん 24/02/06 09:13
 
秀まるお様 お陰様でうまくいきました。手順が簡単になり助かりました。有り難う
ございました。


> 5万から始めるのは、マクロの中の
> ......
> 日にちが変わってもずっとシリアルナンバー的に番号をカウントアップさせたい
>場合は、前回の値をレジストリかiniファイルかどこかに保存しておくような処理が
>必要になります。

[ ]