[903] データが無かったらマクロ停止&終了
まくろしょしんしゃ [2025/04/12 12:01:07]
大変お世話になっております。
マクロの動作で削除や検索をしているのですが
もし該当が無くなり、ヘッダのみになったら
その時点でマクロの停止をcassavaの終了をしたいです。
もしデータがある場合はそのまま保存したいのですが
どう書いたら良いでしょうか…?
Re: [903] データが無かったらマクロ停止&終了
あすかぜ [2025/04/12 22:12:48]
Cassava Editor の終了には End(); という命令があるのですが、試してみたところこれだけでは余計なダイアログが表示されてしまうようですね。
「変更を保存しますか?」というダイアログを出さないようにするには、一度どこかにファイルを保存する必要がありそうです。
また、End(); のあとに else や return などが続くと「中断しました」というダイアログが表示されてしまうようです。
Ver.2.6 以降であれば、これは End(); に続けて MacroTerminate(); と記述することで回避できそうです。
これらをあわせると、次のようなマクロになりそうです。
if (Bottom == 1) {
// ヘッダのみの場合の処理
SaveAs("C:\\...\\temp.csv"); // 邪魔にならないどこか適当な場所
End();
MacroTerminate();
}
// データがある場合の処理
Save();
「ヘッダのみになった」ことはデータの最下行(Bottom)がヘッダ行(1)かどうかで判別できると思います。
ファイルの保存は上書き保存の場合 Save(); を、マクロでファイル名を指定する場合は SaveAs(filename); を、ダイアログボックスでファイル名を指定する場合は SaveAs(); を使ってください。
今後、このようなマクロがもう少し簡単に書けるよう、End(); 関連の挙動の改善について考えてみたいと思います。
Re: [903] データが無かったらマクロ停止&終了
まくろしょしんしゃ [2025/04/14 15:54:38]
なるほど。
ありがとうございます。
ヘッダのみだったらいらないデータ(確認しなくていいデータ)なのでタイトルに「いらない」ってつけて保存します。
あとはいらないデータですってメッセージ出すようにしたので運用回避します。
中身あったらその後の作業が必要なので、通常通り保存する動作入れます。
バッチでのマクロ複数動かすのにあたり、データがない時の処理をどうするか悩んでいたので、大変ありがたいです。
これからもよろしくお願いします。