選択されたメール一つ一つを加工するマクNo.06080
ぱと さん 02/11/25 22:10
 
メールに一定の加工を行ってから外部ファイルに書き出す処理をマクロで書いて
います。

loaddll "TKInfo.dll";
#n = dllfunc( "DisableDraw", 1 );
$MailFileName = dllfuncstr("MailFilePath");
#hv =  dllfunc("HeaderView");
#n = dllfunc("SwitchHeaderView", 2);
#n = dllfunc("BeginEditMail");
#r = readonly;
#b = browsemode;
if( #r ) readonlyswitch;
if( #b ) browsemodeswitch;
gofiletop;
insert "\n";
insert " |MailFileName:" + $MailFileName + "\n";
saveas "c:\\tmp.txt";
if( #r ) readonlyswitch;
if( #b ) browsemodeswitch;
#n = dllfunc("SwitchHeaderView", #hv);
#n = dllfunc("CancelEditMail");
#n = dllfunc( "EnableDraw", 1 );
endmacro;

こんな感じの処理(実際は、メールの加工部分はもう少し長いです。)なのですが、
こういった処理を、メール一覧で選択した個々のメール一つ一つについて行うに
はどのようなコードを書けばよいのでしょうか?

最初は、選択されたメールをいったん、適当なフォルダにコピーしてから、その
フォルダにあるメール全部に対して上記の処理を行うという形で書いたのですが、
(この処理はなんとかできました。)上記のように、MailFilePath を含んだ形の
加工を行いたいので、コピーしてからでは意味が無いことがわかりました。

マクロ初心者なので、とりとめも無い質問ですが、どなたかご教示下されば幸い
です。

----
ぱと

[ ]
RE:06080 選択されたメール一つ一つを加工No.06082
秀まるお さん 02/11/26 13:07
 
 メール一覧で複数選択した1つ1つのメールについてマクロで何かするってこ
とは、現状では鶴亀メールとして想定していません。よって特殊な方法でも使わ
ない限り実現不可です。

 特にメールを書き換える系のコマンド(エディタで開いて保存など)をすると、
それによってメール一覧の内部データが作成されなおす可能性があって、そうす
るとメール一覧上での選択状態を保持することが出来なくなったり、いろいろ複
雑な問題が発生します。

 単純に考えても、例えば複数選択されたメールのうちの1つだけを削除すると、
それによって他のメールのファイル中での位置(オフセット)が変化します。ス
レッド表示していてスレッドの親メールが削除されれば子メールは別のスレッド
に移動しますが、そうすると複数選択についての内部情報を保持することは困難
です。

 そういった可能性について内部的な矛盾点などを洗い出した上で、適当な仕様
を考える必要があります。一筋縄ではいかないので、とりあえず要望リストにた
まった要望の1つってことになってます。

-----------------------
 現状のマクロでどうしても複数選択について処理したいなら、LB_GETSELメッ
セージを使ってメールの選択状態を取得する裏技があるにはあります。遅くても
いいなら紹介しますけど。(スレッド表示には対応しないという条件でなら)

[ ]
RE:06080 選択されたメール一つ一つを加工No.06083
かわした さん 02/11/26 13:17
 
かわしたです。

>こういった処理を、メール一覧で選択した個々のメール一つ一つについて行うに
>はどのようなコードを書けばよいのでしょうか?

turukame.5:00234 の私のコメントを再掲しますね。
>鶴亀マクロでは選択中の複数のメールを個別に処理することが基本
>的にはできないので、最初にエクスポートしてそのファイルをテキ
>ストファイルとして開き処理する形になるかと思います。複数ファ

ということなんです。鶴亀の内部的なデータの持ち方の問題だそう
で、これを可能にするにはかなり大掛かりな変更が必要になるとの
秀まるおさんの発言を以前見たことがあります。
# と思ったら新たに秀まるおさんのコメントがつきましたね

たとえ別フォルダに複写して作業しても、その後そのフォルダ全体
のメールを選択することが(裏技を使わない限り)できないので、
上記の私のコメントではこのことには触れませんでした。


ということで、ぱとさんが考えてるイメージでの実現はできないと
思いますが、せっかくここまで作られていますので代わりの手法を
考えてみました。マクロの流れは以下のようになります。

1. アカウント名、フォルダ名の取得
2. 作業フォルダにコピーして、個々のメールの加工
   (すでに作られているもので結構です.ただしMailFilePathは
     ここでは書き込まない)
3. 裏技で作業フォルダの全メールを選択しエクスポート
4. 秀まるおさん提示のマクロでエクスポートしたファイルを開き
   メールの区切りをピリオドに置換
5. ファイルの先頭から順次Message-IDを検索&取得し、1で取得し
   たフォルダで検索
6. MailFilePath とおそらく次版で対応されるMailFileOffset関数
   を使って情報を取得し、元ファイルに書込み
7. 必要な数だけ5,6を繰り返し

処理が入り組んでしまうため実用的な速度が出るかどうかは怪しい
のですが、この手順でいけると思います。5,6では、マクロを実行
するウィンドウを切り替える必要があるので難しいかもしれません
が、明日以降でよければマクロの雛形も提示できるかと思います。

[ ]
RE:06083 選択されたメール一つ一つを加工No.06084
秀まるお さん 02/11/26 14:21
 
 かわしたさんの方法よりは僕の裏技の方が楽かなぁと思ったんですが、裏技で
実現するのに少し問題がありました。

 とりあえず、複数選択しているメールを削除したり移動したりしないという条
件であれば複数選択についてサポートできるような気がするので、なんとか早め
に仕様検討して対応したいと思います。

 (次のバージョンかその次くらいに)

[ ]
RE:06082 選択されたメール一つ一つを加工No.06086
ぱと さん 02/11/26 16:32
 
秀まるお さん

> メール一覧で複数選択した1つ1つのメールについてマクロで何かするってこ
>とは、現状では鶴亀メールとして想定していません。よって特殊な方法でも使わ
>ない限り実現不可です。

なるほど、判りました。

> 特にメールを書き換える系のコマンド(エディタで開いて保存など)をすると、
>それによってメール一覧の内部データが作成されなおす可能性があって、そうす
>るとメール一覧上での選択状態を保持することが出来なくなったり、いろいろ複
>雑な問題が発生します。

確かにそうですよね。

> 単純に考えても、例えば複数選択されたメールのうちの1つだけを削除すると、
>それによって他のメールのファイル中での位置(オフセット)が変化します。ス
>レッド表示していてスレッドの親メールが削除されれば子メールは別のスレッド
>に移動しますが、そうすると複数選択についての内部情報を保持することは困難
>です。

今回やろうとしていることが、外部にメールの位置情報を持ち、そこから、鶴亀
に向かって逆ジャンプするということですので、ファイルの中でのオフセットが
不定であるということがどうしても、大きな壁になってきます。

TaskPrize の開発MLの方でもこの件を相談しているのですが、B2との連携プラ
グインの作者である nao さんという方が、必要なら力になってくれると私におっ
しゃってくれています。

例えば、list.bin のフォーマットを秀まるおさんの側で公開していただけば、そ
こから、独自に、Message-ID の検索を行って、鶴亀にジャンプするための必要な
報を解析することはできるんじゃないかということです。(そこに必要な情報が入
っていればだと思いますけど)。 これができれば、外部のファイルにエクスポー
トするときに、Message-ID さえ記録すれば良いので、鶴亀上でテンポラリフォル
ダにコピーしてから、全メールに対して加工処理を行うという手順で、現在やろ
うとしていることが可能になります。

list.bin の中で、Message-ID による検索を行って、そこに、ファイル名とオフ
セットがセットで格納されていれば、現在の鶴亀の起動オプションに渡すことで、
ジャンプは出来るということになります。まあ、このあたりは、私には難しすぎ
てどこがどうなるか判らないのですけれど・・・

というわけで、list.bin の構造という技術情報の公開は可能でしょうか?

----
ぱと

[ ]
RE:06083 選択されたメール一つ一つを加工No.06087
ぱと さん 02/11/26 16:47
 
かわした さん

5番会議室に引き続きありがとうございます。

>turukame.5:00234 の私のコメントを再掲しますね。
>>鶴亀マクロでは選択中の複数のメールを個別に処理することが基本
>>的にはできないので、最初にエクスポートしてそのファイルをテキ
>>ストファイルとして開き処理する形になるかと思います。

そうですね。まさに、既にあちらでコメントいただいていたのでした。

>たとえ別フォルダに複写して作業しても、その後そのフォルダ全体
>のメールを選択することが(裏技を使わない限り)できないので、
>上記の私のコメントではこのことには触れませんでした。

メールのままで加工した方が、いろいろと楽だったので、なんとかメールのまま
で必要な加工をしてから、外部ツールに渡そうと考えていました。フォルダのフ
ァイル全体を選択する裏技は秀まるおさんがご紹介下さいましたし、全メールに
対してなら、個々のメールへの処理を繰り返し行うということも、一応、なんと
か、動く形でコードを書くことができました。(while の使い方がよく判ってない
ですけど)

>5. ファイルの先頭から順次Message-IDを検索&取得し、1で取得し
>   たフォルダで検索
>6. MailFilePath とおそらく次版で対応されるMailFileOffset関数
>   を使って情報を取得し、元ファイルに書込み

なるほど、この方法でやろうと思えばできそうですね。フォルダを特定できてい
ますので、Message-ID での検索も、まあまあの速さでできそうです。

ただ、変数の使い方があまり判ってないので、フォルダを移動したり、ファイル
の中での位置を変えたりしながら、情報を書き込んでいく処理がうまくできるか
どうかちょっと自信がないですけど。

>が、明日以降でよければマクロの雛形も提示できるかと思います。

ありがとうございます。参考にさせていただきます。

----
ぱと

[ ]
RE:06084 選択されたメール一つ一つを加工No.06088
ぱと さん 02/11/26 16:49
 
秀まるお さん

> とりあえず、複数選択しているメールを削除したり移動したりしないという条
>件であれば複数選択についてサポートできるような気がするので、なんとか早め
>に仕様検討して対応したいと思います。

お手数おかけいたします。どうもありがとうございます。

いまさらながら、マクロの楽しみに目覚めています。自分が考えたコードが、予
想したとおりに動作するというのは楽しいものですね。

----
ぱと

[ ]
RE:06086 選択されたメール一つ一つを加工No.06089
秀まるお さん 02/11/26 16:49
 
 list.binはメモリにロードした後は古い情報となってしまうので、それの形式
が分かってもあまり意味がありません。

 しいて知らせるとしたら、鶴亀メール内部のメール一覧の情報ってことになり
ます。また、リストボックスの内部データやスレッド表示時のTreeView上での値
の持ち方(特に複数選択時の持ち方)なんかも非常にややこしくなっているので、
その辺まで含めて情報が必要ってことになったらソースコードを見てもらうしか
無いです。ちゃんとした資料は頭の中にしかありませんので。

 また、その辺関係で仕様変更もありえまして、たとえば内部的にlist.binファ
イルのバージョン情報なんかもあって、それが変化した場合はlist.binを作り直
すとか、いろいろややこしいことをしています。

 ってことで、現実的には内部データをそのまま見ることは不可能です。

 はたしてBecky!がプラグイン用にどういう情報を見せているのか分からないの
でなんですが、とりあえず今回問題になっているTaskPrize対応ということなら、
メールの複数選択に関するマクロによる処理が出来ればそれで済むような気がし
ます。

 あるいはC言語のDLLで処理するのなら、今回のTaskPrize対応のための限定的
な情報提供/関数追加程度に済ませたい所です。たとえばマクロの場合は「現在
選択しているメール」しか対象に処理が出来ませんが、C言語用に、特定のイン
デックス指定でそのメールの中身を参照するといったことは可能です。

[ ]
RE:06089 選択されたメール一つ一つを加工No.06090
ぱと さん 02/11/26 17:01
 
秀まるお さん

> list.binはメモリにロードした後は古い情報となってしまうので、それの形式
>が分かってもあまり意味がありません。

なるほど、メールの受信やら振分やらに伴って、動的に変化していくわけですも
のね。

> また、その辺関係で仕様変更もありえまして、たとえば内部的にlist.binファ
>イルのバージョン情報なんかもあって、それが変化した場合はlist.binを作り直
>すとか、いろいろややこしいことをしています。
>
> ってことで、現実的には内部データをそのまま見ることは不可能です。

なるほど、事情がわかりました。確かに難しそうです。

> はたしてBecky!がプラグイン用にどういう情報を見せているのか分からないの
>でなんですが、とりあえず今回問題になっているTaskPrize対応ということなら、
>メールの複数選択に関するマクロによる処理が出来ればそれで済むような気がし
>ます。

B2 へと TaskPrize からジャンプするには、二つの情報を保持していまして、一
つが、Becky-MailIDというもの
MailID:<3dd324f3.mb\!!!!Inbox\?8C>
こんな感じですね。メールファイルと、独自 ID でメールを特定しています。
もう一つは、Message-ID ですね。Becky-MailID でうまく該当メールが見つから
ない時には、Message-ID を利用するという形になっているらしいです。

また、Message-ID から、該当メールを探す部分は naoさんの独自実装で、探した
該当メールにジャンプする部分は、B2 の Plugin API の機能であるそうです。

サーチクロスとの連携でも言えることですが、ログとしてたまったメールという
のは、ユーザーにとって、非常に貴重なデータベースですので、そのデータにい
ろんな方向から、アクセスしていく手段が提供されていると、いろいろと面白い
ことができるのではないかなあと思っています。

んでも、元々要望がいっぱいで、秀まるおさんが苦労されていることはよく存じ
あげていますので、無理な要望はせずに、現在提供されている手段で、なんとか、
目的を達成できるように、努力してみるつもりです。

----
ぱと

[ ]
RE:06087 選択されたメール一つ一つを加工No.06101
かわした さん 02/11/28 02:16
 
かわしたです。

結局最初にエクスポートしてテキストファイルとして処理するほう
が速そうだったので、そちらの手法でマクロを組んでみました。前
回のメールでは「マクロを実行するウィンドウを切り替える必要が
…」などと書きましたが、その必要もありませんでした。

TaskPrize側にどんな内容を渡せばよいのかは全く調べていないの
で、ぱとさんのこれまでのマクロをまねさせてもらっています。

あまり時間が割けなかったのでエラー処理を全くしていないし、ヘ
ッダの抽出処理の部分などにまだまだ修正の余地がありますがとり
あえず雛形程度にはなるのではないでしょうか。

-- ここから
loaddll "tkinfo.dll";
//出力するファイル名
$ExportFile=dllfuncstr("HomeDir")+"hoge.txt";

//エクスポート
if(dllfunc("MailType")!=-1){
    #n=dllfunc("Export",$ExportFile,"turukame","noencode");
}
else endmacro;

//テキストファイルとして開く
#n=dllfunc("NewMail");
#n=dllfunc("SwitchHeaderView", 0);
gofiletop;
beginsel;
gofileend;
delete;
insertfile $ExportFile;

//メールの区切りをピリオドに変更
gofiletop;
beginsel;
down;
delete;
gofiletop;
replaceallfast "^[\.]", "..", regular;
gofiletop;
replaceallfast "\x0C! ", ".";
gofiletop;

//ウィンドウハンドルの取得
#handle=hidemaruhandle(0);
#main=dllfunc("MainWnd");

disableerrormsg;

//メインループ
M_Loop:
    //ヘッダ領域の確定
    #hs=y;
    searchdown "^\n",regular;
    #he=y;
    //ヘッダ情報の取得
    call CurrentHeader "Message-Id";
    $Mid=$$return;
    call CurrentHeader "Date";
    $Date=$$return;
    call CurrentHeader "From";
    $From=$$return;
    call CurrentHeader "Subject";
    $Subj=$$return;
    //本体側情報の取得
    $sfp="(\""+$Mid+"\",target=\"Message-Id:\"),inmail=0";
    #n=dllfunc("ExecAt",#main,"SetFindPack",$sfp);
    if(!dllfunc("ExecAt",#main,"FindDown")) #n=dllfunc("ExecAt",#main,"FindU
p");
    if(result){
        $Mfn=dllfuncstr("ExecAt",#main,"MailFileName");
        //#Mfo=dllfunc("ExecAt",#main,"MailFileOffset");
    }
    else{
        $Mfn="";
        //$Mfo="";
    }

//書き込み
    moveto 0,#he+1;
    insert "==Header Information for TPZ==\n";
    insert " |MailFileName:" + $Mfn + "\n";
    insert " |Date        :" + $Date+ "\n";
    insert " |From        :" + $From+ "\n";
    insert " |Subject     :" + $Subj+ "\n";
    insert " |Message-ID  :" + $Mid + "\n";
    insert "==============================\n\n";
    searchdown "^[\.]",regular;
    if(result){
        down;
        goto M_Loop;
    }

//保存して終了
enableerrormsg;
saveas $ExportFile;
#n=dllfunc("SetMainWndTop");
closehidemaru #handle;
freedll;
endmacro;

//ヘッダ内容の取得サブルーチン
CurrentHeader:
    moveto 0,#hs;
    searchdown2 "^"+$$1+":", regular;
    if(result && y<#he){
        golineend;
        $$ch=gettext(strlen($$1)+2,y,x,y);
    }
    else $$ch="";
    return $$ch;

[ ]
RE:06101 選択されたメール一つ一つを加工No.06102
ぱと さん 02/11/28 03:29
 

かわしたさん

どうもありがとうございます!

夜なので、まだじっくりと試していませんが、いただいたコードに、TaskPrize
へと書き出したファイルを読み込ませる部分を付け加えて実行したら、ばっちり
と複数メールの取り込みが出来ました!

TaskPrize にインポートするには、(標準のセットアップパスにあるとして)
run "C:\\Program Files\\TaskPrize2\\TskPrize.exe /i" + $ExportFile;
のように、/i オプションをつけてエクスポートしたファイルを渡せばよいです。

選択したメールをエクスポートすることは出来るわけですので、かわしたさんが
おっしゃるように、先にエクスポートしてから、必要な加工を行えば、個々の
メールに対して処理を行う必要は無いわけですね。エキスポートしたものをテキ
ストとして扱って加工する分、ヘッダ情報を加工して付加する部分が複雑になる
わけですが、その部分は、かわしたさんが書いてくれたので、これを元にすれば、
内容をいじることはできそうです。

>TaskPrize側にどんな内容を渡せばよいのかは全く調べていないの
>で、ぱとさんのこれまでのマクロをまねさせてもらっています。

TaskPrize 側に渡すには、複数メールを . で区切って渡すだけ(※)でして、ヘ
ッダの情報を付加する部分のフォーマットは自由です。ここは、TaskPrize の側
ではヘッダ情報自体はインポートされないので、それを見える形で付加しておく
ことと、TaskPrize の側から鶴亀にジャンプする部分のために付け加えておくだ
けです。こちらはこちらでプラグインを書かなければいけないので、この部分の
フォーマットは決まっているわけではありません。

※他に、行頭の .%- はそれぞれ .. .% .- としなければなりませんので、

gofiletop;
replaceallfast "^[\.]", "..", regular;
gofiletop;
replaceallfast "^-", ".-", regular;
gofiletop;
replaceallfast "^%", ".%", regular;

としました。

今回書いていただいた手法を使えば、TaskPrize → 鶴亀のジャンプにも同じ仕
組みで出来そうですね。

(1)メールファイルのパスとメールオフセットで、鶴亀の機能である起動オプシ
ョン渡しでのジャンプを行う。
(2)これでジャンプできなければ、メールファイルのフォルダに行って、Message
-IDでの検索を試みる
(3)ファイルの移動などでこれでも見つからなければ、アカウント全体から、
Message-ID を使っての検索を行う

という形にすれば、元メールが削除されてさえいなければ、いずれかの段階で必
ずジャンプが可能になるはずですね。

先が見えてきたので、非常に嬉しいです。同じ手を使えば、TaskPrize に限らず、
メールのクリッピングを任意のソフトで行って、そこに記載してある情報から、
鶴亀の元メールにジャンプするということが出来ますね。

かわしたさん、本当にどうもありがとうございました。いただいたコードを元に、
いろいろいじくって見たいと思います。

----
ぱと

[ ]
RE:06101 選択されたメール一つ一つを加工No.06103
ぱと さん 02/11/28 10:44
 
かわした さん

>    call CurrentHeader "Message-Id";

>//ヘッダ内容の取得サブルーチン
>CurrentHeader:
>    moveto 0,#hs;
>    searchdown2 "^"+$$1+":", regular;
>    if(result && y<#he){
>        golineend;
>        $$ch=gettext(strlen($$1)+2,y,x,y);
>    }
>    else $$ch="";
>    return $$ch;

この部分ですが、メールによっては、Message-ID となっているものがあるようで、
この場合、うまく Message-Id 文字列が返らないようですね。
searchdown2 "^"+$$1+":", regular;
の部分のオプションで、大文字、小文字の区別をしないようにできそうですね。
少し試行錯誤してみます。

機能、かわしたさんの発言を読んでから寝るまでにいろいろ考えていたのですが、
かわしたさんのマクロの検索部分のルーチンを使えば、外部ツールとの連携では
なくて、鶴亀内で、任意のメールのクリッピング機能というのも実現できそうだ
なあと考えて非常に嬉しくなりました。

クリッピングというのは、気になる発言を特定のフォルダにコピーするだけでな
くて、元のメールにジャンプできる機能を実装しておくということです。単純に
コピーしただけだと、スレッドの前後を参照したい時に困ってしまいますが、元
メールにジャンプすることができればこれが解決します。また、全文をコピーせ
ずに、ジャンプに必要な情報だけを、クリップしていくということもできるわけ
です。なんだかわくわくしてきました。

ところで、Newmail を使ってテキスト加工を行う際には、画面表示の抑制を行う
ことはできないのですよね?>秀まるおさん

----
ぱと

[ ]
RE:06103 選択されたメール一つ一つを加工No.06104
かわした さん 02/11/28 11:11
 
かわしたです。

ご指摘の部分は問題点として認識していましたが、ま、いっかと思
ってほうっておいた部分です(^^;

>searchdown2 "^"+$$1+":", regular;
>の部分のオプションで、大文字、小文字の区別をしないようにできそうですね。
>少し試行錯誤してみます。

正規表現を使わなければ大文字小文字の区別をしないので、行頭の
判定を別の手法(例えばヒットしたときのカーソル位置チェック)
でするとよいかもしれません。

ほかに修正した方が良いと思われる問題点は
・長いヘッダ、複数行のヘッダに対応していない
・エクスポート時に毎回上書き確認のウィンドウが表示される
などです。

>ところで、Newmail を使ってテキスト加工を行う際には、画面表示の抑制を行う
>ことはできないのですよね?>秀まるおさん

disabledraw;
の一行を追加したらどうでしょう。

[ ]
RE:06104 選択されたメール一つ一つを加工No.06105
かわした さん 02/11/28 13:36
 
かわしたです。補足です。

>>ところで、Newmail を使ってテキスト加工を行う際には、画面表示の抑制を行う
>>ことはできないのですよね?>秀まるおさん
>disabledraw;
>の一行を追加したらどうでしょう。

上記の対応でテキスト加工中の画面表示の抑制は行えますが、新規
メールのウィンドウ自体を出したくないということでしたらこの対
応ではダメですね。というか現在の仕様では無理なのではないでし
ょうか。

[ ]
RE:06104 選択されたメール一つ一つを加工No.06106
ぱと さん 02/11/28 14:26
 
かわした さん

いろいろありがとうございます。

>ご指摘の部分は問題点として認識していましたが、ま、いっかと思
>ってほうっておいた部分です(^^;

もちろん、かわしたさんにいただいたものをベースとして、私があれこれ試行錯
誤していくつもりです。かわしたさんにおんぶに抱っこで最後までお願いして作
ってもらおうとは考えていませんので、ご安心を(^^;

でも、また壁にぶちあたったら、ご相談しますので、助言をお願いします。

>ほかに修正した方が良いと思われる問題点は
>・長いヘッダ、複数行のヘッダに対応していない
>・エクスポート時に毎回上書き確認のウィンドウが表示される
>などです。

そうですねえ。ヘッダの処理は、鶴亀内でやった方が楽ですね。エクスポート時
の問題は、あらかじめ存在確認をして削除するとか、都度、テンポラリファイル
名を決定するなどでしのぐつもりです。

画面表示の抑制の件もあわせて、いろいろやってみます。また進行状況をご報告
します。

#今日はちょっと時間が取れないので、これにて失礼。

----
ぱと

[ ]
RE:06106 選択されたメール一つ一つを加工No.06107
秀まるお さん 02/11/28 14:51
 
 ピリオド区切りに変換する件については、鶴亀メールのエクスポートコマンド
側で対応します。(今作業中)

 MailFileOffset関数や複数メールの選択関係の処理も次のバージョンに入りま
す。

 なので、次の鶴亀メールが出るまで作業を中断していただいた方がいいような
気がします。

[ ]
RE:06107 選択されたメール一つ一つを加工No.06108
ぱと さん 02/11/28 15:03
 
秀まるお さん

> なので、次の鶴亀メールが出るまで作業を中断していただいた方がいいような
>気がします。

はい、いろいろとありがとうございます。なんとか使えるマクロを書きあげて、
マクロライブラリにアップさせていただくつもりです。

----
ぱと

[ ]