マクロからマクロを呼び出すと
-
マクロからファイルセレクターを自前で持つマクロを呼び出したときに、
気になる動作を見つけましたので報告します。
確認の為以下の3つのファイルを用意し、呼び出し側マクロ(caller.js)を実行して
観察しました。結果:
①+③ 暴れる(すぐ止まるけど自己責任で)
①+③コメントアウト 正常動作(マクロ本体単体での使用ができなくなる)
②+③ 正常動作(2回目以降は空タブが増え続ける)
②+③コメントアウト 注意! 空タブに書き込み保存しようとします①+③でファイルの主導権争い?と考え片方を別のファイルに指定しても改善せず。
でも、②+③はちゃんと動作してるのを考えると……
この呼び出し方法と OpenFileメソッドとの相性が悪いのかも?
そもそも、そんな呼び出し方しないで下さい(><)って話かもしれませんが^^;
直らなくても開発のヒントぐらいにでもなれば幸いです。caller.js(呼び出し側)
```js
var objShell = new ActiveXObject("WScript.Shell");
var macroPath = 'C:\\(適当なディレクトリ)\\sample_script.js';
var filePath = 'C:\\(適当なディレクトリ)\\result.txt';
var command = '';
// ①
command = editor.FullName + ' /mf "' + macroPath + '" "' + filePath + '"';
// ②
//command = editor.FullName + ' /mf "' + macroPath + '"';
// Mery用マクロ呼び出し
objShell.Exec(command);
```sample_script.js(マクロ本体)
```js
// 作業用ファイルパス
var WORKING_FILE = 'C:\\(適当なディレクトリ)\\result.txt';
// 表示用乱数作成
var num = Math.floor(Math.random() * 100);
// ③
editor.OpenFile(WORKING_FILE, meEncodingNone, meOpenAllowNewWindow);
// 書き込み
editor.ActiveDocument.Text = num;
editor.ActiveDocument.Save();
```result.txt(表示用ファイル)
```txt
(中身は空でよい)
```| 玄米茶 | 返信 -
ご報告ありがとうございます。
あ、なるほど確かに。
①+③のパティーンで暴走しました、無限ループ入ってますね…> そもそも、そんな呼び出し方しないで下さい(><)って話かもしれませんが^^;
そんな呼び出し方は想定していませんでしたが、うっすら心当たりはありますので調査してみようと思います。でも、ActiveXObject を使うとやりたい放題できちゃうので、そこまでの保証はできませんが^^;
| Kuro | 返信 -
やりたい放題したいので上手く対応できることを祈ってますw
| 玄米茶 | 返信