秀丸エディタのマクロでcsvファイルを処理No.06826
moyabu さん 20/06/10 11:55
 
教えて下さい.
現在,秀丸メールのマクロを使って,csvファイルを処理して,複数宛(数百)の
メールの自動作成をおこなっています.

その際に,
CSV_LoadFile,CSV_GetLineCount,CSV_SetCurrentLine,CSV_GetColumnTextなどの
マクロ命令を使っています.重宝しています.

秀丸エディタ内では,これらのマクロを使いたいのですが.これらのマクロ命令を実
行させると,
「dllがロードされていないのにdllfuncが使われました」
というエラーメッセージが出ます.

秀丸エディタのマクロで,CSV_GetLineCountなどと同じことを行わせる便利なマクロ
があれば教えて下さい.あるいは,類似のツールがあれば教えて下さい.

秀丸エディタのマクロの話題なので,秀丸エディタの会議室でと思いましたが,こち
らに投稿させていただきました.

[ ]
RE:06826 秀丸エディタのマクロでcsvファNo.06827
dszhm さん 20/06/10 12:39
 
>その際に,
>CSV_LoadFile,CSV_GetLineCount,CSV_SetCurrentLine,CSV_GetColumnTextなどの
>マクロ命令を使っています.重宝しています.
>
>秀丸エディタ内では,これらのマクロを使いたいのですが.これらのマクロ命令を
>実行させると,
>「dllがロードされていないのにdllfuncが使われました」
>というエラーメッセージが出ます.

1ユーザです。

 「CSV_LoadFile」で検索すると、
https://help.maruo.co.jp/tkinfo/html/TKINFO_CSV_LOADFILE.html
 がヒットします。
 これはサイトー企画さんのオフィシャル情報と思われます。
 これによると、これらの関数は、TkInfo.dll のものですので
 関数を使用する前に
  loaddll "〜〜〜\TkInfo.dll";
  をしないといけない筈です。

後程、オフィシャルな回答があると思いますが、取り急ぎ。

[ ]
RE:06827 秀丸エディタのマクロでcsvファNo.06828
moyabu さん 20/06/10 13:15
 
コメントありがとうございます.

> 関数を使用する前に
>  loaddll "〜〜〜\TkInfo.dll";
>  をしないといけない筈です。

文頭に loaddll "TKInfo.dll"; と入れていますが,動きません.

たぶん,CSV_GetColumnText などは秀丸メール専用マクロで秀丸エディタでは動か
ないのではと思っています.

秀丸メールに,CSV_GetColumnText のような超便利なマクロがあるので,秀丸エデ
ィタでも同機能のツールがきっとあるのではと思い,質問した次第です.


[ ]
RE:06828 秀丸エディタのマクロでcsvファNo.06830
秀まるお2 さん 20/06/10 14:02
 
 秀丸エディタからtkinfo.dllをロードするには、tkinfo.dllのフルパス名を指定す
る必要があります。

    loaddll "c:\\Program Files (x86)\\HidemaruMail\\tkinfo.dll";

 みたいにすればロードできると思います。しかし、ロードは出来ても、CSV_LoadFi
le関数についてはすみませんがうまく機能しないです。

 なので、秀丸エディタ上でtkinfo.dllのこれら関数を使って何かするのは現状無理
になります。

 今日にでも秀丸メールの次のβ版をアップロードしようと思ってた所なんですが、
せっかくなので、これらCSV_xxxx系関数を秀丸エディタからも使えるように直してア
ップロードしようと思います。

 少々お待ちください。

[ ]
RE:06830 秀丸エディタのマクロでcsvファNo.06832
moyabu さん 20/06/10 14:14
 
> 秀丸エディタからtkinfo.dllをロードするには、tkinfo.dllのフルパス名を指定
>する必要があります。
>
>    loaddll "c:\\Program Files (x86)\\HidemaruMail\\tkinfo.dll";
>
> みたいにすればロードできると思います。

なるほど,そうでしたか.


> 今日にでも秀丸メールの次のβ版をアップロードしようと思ってた所なんですが、
>せっかくなので、これらCSV_xxxx系関数を秀丸エディタからも使えるように直して
>アップロードしようと思います。

CSV_xxxx系関数が秀丸エディタで使えたら,うれしいです.
ご無理なさらず,よろしくお願いします.

[ ]
RE:06832 秀丸エディタのマクロでcsvファNo.06857
moyabu さん 20/06/12 15:29
 
>CSV_xxxx系関数が秀丸エディタで使えたら,うれしいです.

この件,以下のようなサブルーチンを作り,なんとかなったようです.
dszhmさん,秀まるおさん,ありがとうございます.

CsvSub:
//必ずcsvファイルをTSV/CSVモードで表示した状態で,このマクロ,サブルーチンを
走らせること.必須
//使い方 csvファイルの4番目の行の3番めの列の文字列を取得する場合 call CsvS
ub 4, 3;とする
//ただし,行番号も列番号も0から始まる
//そのカラムの内容は$$return の文字列として返される

//次のような感じのcsvのデータを作り,TSV/CSVモードで表示しておくこと,必須.
//各行の最後(末端)にもカンマ "," が必要みたい

//0_0,0_1,0_2,0_3aaa,
//1_0,1_1,1_2,1_3bbb,
//2_0,2_1,2_2,2_3ccc,
//3_0,3_1,3_2,3_3ddd,
//,4_1abcdefgoyabu,dousuru,,,

//ここからサブルーチン本体
//カーソルを目的カラムの先頭位置まで移動させる

moveto 0, 0;  //カーソルをファイルの先頭 x=0,y=0に持ってくる
down ##1;  //カーソルを指定の行の位置まで下げる
##col_counter = 0; //横方向へカーソルを動かすカウンター

while(##col_counter < ##2){   //カーソルを目的のカラムの先頭に移動させる
 forwardtab;
 ##col_counter = ##col_counter + 1;
}

##para01 = x;  //目的カラムの先頭のカーソルx位置
##para02 = y;  //目的カラムの先頭のカーソルy位置.yは変化しないがとりあえず

forwardtab;  //次のカラム(","の後になる)までカーソルを移動させる.文字列取
得にはx位置を1つ戻しておく.","を外すため

return gettext( ##para01, ##para02, x-1, y); //これで目的カラムの文字列が返
される

[ ]