[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

田中 [2020/01/29 17:22:24]

お世話になっております。

13列目と14列目に半角や全角の英数字記号スペースが入力されております。
行数はランダムです。

・13列目か14列目にビックリマークが必ず入っています。
ビックリマーク以降の文字列を全て消す。

・13列目と14列目にある文字列を全て全角に変換する。

・14列目に入っている文字数(スペースも含め)が15文字以上あれば、
15文字の所でカンマを追加し、15文字以降の文字列は15列目に移動させ、
15列目でも15文字以上あれば、カンマを追加し、15文字以降の文字列を16列目に移動させる。

というマクロを作成したいのですが、上手く作れずにおります。

※上記2点は、正規表現や、メニューバーの文字変換で出来たのですが、マクロで行いたいです。
1つのキーを軸に3つの処理を行いたいです。

何卒ご教授頂けます様お願い致します。

■変更前

13列目      |14列目
アイうえお ABcde☆ |カキくけこABcde● さしすせとたちつてと ナニヌネノ ハヒフヘホ

■変更後

13列目           |14列目            |15列目 |16列目
アイうえお ABcde☆ |カキくけこABcde● さしす|せとたちつてと ナニヌネノ ハ|ヒフヘホ

●メモ帳で見た場合、
アイうえお ABcde☆ ,カキくけこABcde● さしす,せとたちつてと ナニヌネノ ハ,ヒフヘホ

上記の状態になっていて欲しいです。

何卒、宜しくお願い致します。

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

あすかぜ [2020/01/29 21:27:12]

マクロを書いてみました。
https://www.asukaze.net/soft/cassava/macro/asukaze/bbs533_20200129.cms

期待通りに動くでしょうか?

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

田中 [2020/01/29 22:12:02]

あすかぜ様

早々のご連絡頂き誠に有難う御座います。

早速試させて頂きました所、

『12行目0文字目
文字列定数が終了していません。』

というエラーが出てしまいました。

1つずつ検証致しました所、

for (y = 1; y <= Bottom; y++) {
// ビックリマーク以降の文字列を全て消す。
p = pos([13,y], "!");
if (p > 0) {
[13,y] = left([13,y], p - 1);
}
p = pos([14,y], "!");
if (p > 0) {
[14,y] = left([14,y], p - 1);
}

このマクロでエラーが出ているようで、
他の記述は、期待通りに動いてくれました。

当方では、どのように修正したらよいのか
分からず、誠に申し訳御座いませんが修正して頂けますと幸いで御座います。

何卒、宜しくお願い致します。

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

あすかぜ [2020/01/30 21:08:40]

私の環境では昨日のマクロでエラーは発生しないようです。
誤ってマクロファイルを編集して「"」を削除したり追加したりしていないでしょうか?
Cassava Editor のバージョンは最新版 (2.1.5) でしょうか?

お手数おかけしますがご確認よろしくお願いします。

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

田中 [2020/01/30 22:43:28]

あすかぜ様

ご連絡頂き誠に有難う御座います。

>誤ってマクロファイルを編集して「"」を削除したり追加したりしていないでしょうか?

もう一度、作成頂いたマクロをメモ帳へコピペし(編集をしていない状態)
実行しましたが、同じエラーが出てしまいました。

>Cassava Editor のバージョンは最新版 (2.1.5) でしょうか?

最新版をインストールし直しましたが、結果は同じでした。

他のパソコンでもCassava Editorをインストールし、
同じようにマクロを実行致しますと、同じエラーが出てしまいます。

p = pos([13,y], "!");
if (p > 0) {
[13,y] = left([13,y], p - 1);
}
p = pos([14,y], "!");
if (p > 0) {
[14,y] = left([14,y], p - 1);
}

の部分を削除すると、他のパソコンでも上手く動作してくれています。

お忙しい中、誠に申し訳御座いません。

他の原因があるのでしょうか。

何卒、ご教授の程宜しくお願い致します。

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

田中 [2020/01/31 09:51:17]

あすかぜ様

何度も、申し訳御座いません。

!以降の文字列を消す部分が
!が全角だとエラーが出て、半角にすると希望通り動作致しました。

一旦、半角に変換し
!を含んだ文字列を削除後、全角に戻す方法で
解決致しました。

お手数お掛けし申し訳御座いません。

マクロを組んでくださり、有難う御座います。

今後とも何卒宜しくお願い致します。

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

あすかぜ [2020/01/31 19:37:29]

すみません、すでに回避できているようですが、マクロの文字コードの問題のようです。
メモ帳でマクロを編集する際は、「名前を付けて保存」のダイアログで「文字コード」を「ANSI」もしくは「UTF-8(BOM 付き)」のどちらかを指定するようにしてください。

マクロの文字コードを指定もしくは自動判別して BOM なしの UTF-8 も処理できるようにすることを検討したいと思います。

Re: [533] 特定の列を全角にし、文字数によりカンマを追加するマクロ

田中 [2020/02/01 00:05:49]

あすかぜ様

ご連絡頂き誠に有難う御座います。

「文字コード」を「ANSI」と「UTF-8(BOM 付き)」の両方で
保存し、マクロを実行致しましたら、
全角の!でも動作致しました!

このような問題があったとは知らず、大変失礼致しました。

有難う御座います!

スレッド一覧に戻る返信