[ 新規に投稿する ]

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; charset=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ファイルかどこかに保存しておくような処理が必要になります。
[ ]

[ 新規に投稿する ]