マクロからマクロを呼び出すと

  1. マクロからファイルセレクターを自前で持つマクロを呼び出したときに、
    気になる動作を見つけましたので報告します。
    確認の為以下の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
    (中身は空でよい)
    ```

     |  玄米茶  |  返信
  2. ご報告ありがとうございます。

    あ、なるほど確かに。
    ①+③のパティーンで暴走しました、無限ループ入ってますね…

    > そもそも、そんな呼び出し方しないで下さい(><)って話かもしれませんが^^;

    そんな呼び出し方は想定していませんでしたが、うっすら心当たりはありますので調査してみようと思います。でも、ActiveXObject を使うとやりたい放題できちゃうので、そこまでの保証はできませんが^^;

     |  Kuro  |  返信
  3. やりたい放題したいので上手く対応できることを祈ってますw

     |  玄米茶  |  返信
スポンサーリンク