none
ExcelVBA:外部プログラム動作中もマウスカーソルを砂時計のままにするには? RRS feed

  • 質問

  • ExcelVBAからttl(tera termマクロ)を呼び出しています。
    objShell.Runを使っています。
    それを使う理由は、ttlマクロの戻り値を得るためです。
    しかし、ttlマクロ呼び出し中にマウスカーソルが砂時計から
    矢印に戻ってしまい困ってます。
    マウスカーソルを砂時計のままに出来ないでしょうか?
    ※WindowsAPIでマウスカーソルを砂時計に固定出来ないかと思って、
    ネット上を探してみましたが、今のところ見つけられません。

        Application.Cursor = xlWait
        Set objShell = CreateObject("WScript.Shell")
        rtnCode = objShell.Run("ttlマクロ起動", 0, True)
        'rtnCode別に処理
        ・・・・
        Application.Cursor = xlDefault


    以上、よろしくお願いします。

    2014年3月4日 11:03

すべての返信

  • 例えばttlマクロ実行中の待ち時間に、エクスプローラーでファイルのDrag & Dropをするとしても常に砂時計のままでありたい、ということでしょうか?
    2014年3月4日 11:34
  • 返信ありがとうございます。

    はい、処理が終わるまで強制的に砂時計に出来ないかと思っております。

    2014年3月4日 12:41
  • それはエクスプローラーがビジー状態であるという誤解を与えませんか? マルチタスクOSの否定ですし考え直すことをお勧めします。
    2014年3月4日 12:47
  • 他の処理は、終了まで行わない前提ですので、構わないです。

    よろしくお願いします。

    2014年3月4日 13:30
  • 外部プログラムの実行と処理待ち(APIを利用した同期処理)
    ht tp://www.moug.net/tech/exvba/0150034.html
    とか。

    戻り値を得るとの事なのでWaitForSingleObjectの戻り値で判定するとか。
    (Err.LastDLLErrorとFormatMessageでも)

    2014年3月4日 23:04
  •  kumattiさん、返信ありがとうございます。
    処理中にマウスカーソルは砂時計に出来そうですが、
    ttlマクロの戻り値(リターンコード:0~99)が上手く取得出来なさそうです。
    Err.LastDLLErrorとFormatMessageはAPIのエラーコードでしょうか?
    2014年3月5日 14:37
  • 実行ファイル(exe)が処理結果を戻り値として呼び出し側に返す方法 - .NET開発者中心(元VB研)会議室
    ht tp://ap.atmarkit.co.jp/bbs/core/vblab/12939
    DOS コマンドの実行結果を取得する方法 | YU-TANG's MS-Access Discovery
    ht tp://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetDosResult.html

    この辺を見ると、CreateObject("WScript.Shell").Execで良さ気ですね。

    2014年3月5日 23:21
  • 返信が遅くなりまして、すみません。
    CreateObject("WScript.Shell").Execで行うと、
    外部プログラムが表示されるみたいです。
    現在の希望としては、以下が実現出来ることです。
    ①マウスカーソルの砂時計固定
    ②戻り値の取得
    ③外部プログラムの非表示
    以上、よろしくお願いします。
    2014年3月9日 8:59
  • LockWindowUpdate APIで描画を無効にされるとか。
    2014年3月10日 7:03