アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAのExecメソッドでコマンドプロンプトの画面を非表示にして
実行する方法を教えてください、

検索してみると
http://seesaawiki.jp/w/bokkuri_orz/d/VBA%20-%20% …
このページには

Runのように、外部プログラム呼び出し時にそのウィンドウを非表示にする制御は出来ないようです。

と書かれてあります。



http://scripting.cocolog-nifty.com/blog/2007/05/ …
http://scripting.cocolog-nifty.com/blog/2008/08/ …
このページにはやり方が書かれてあるのですが
VBAについてやり方のみでVBAではどのようにして使えば良いか分かりません。

http://blog.onpu-tamago.net/entry/20101020/12875 …
このページにはVBAでもできるというような記載がなされています。

どなたか実行方法を教えてください。

質問者からの補足コメント

  • すいません、出力がおかしい理由がわかりました。
    パス名にスペースが含まれる場合に""で囲んでなかったため
    以前の内容が残っていたためです。

    一応、所望することはできるようになったのですが
    あと、
    ("\", "htmlfile")のところを設定の仕方を教えていただけますでしょうか?

    それと標準出力ではなく、
    標準入力、や、標準エラー出力、の出力の仕方も教えていただけますでしょうか?

    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/05/19 15:29

A 回答 (3件)

>("\", "htmlfile")のところを設定の仕方を教えていただけますでしょうか?


これはVBSでクリップボードのデータを何とか簡単に取得できないかと
Googleりまくっただけです (^_^;)
http://scripting.cocolog-nifty.com/blog/2010/04/ …

>標準入力、や、標準エラー出力、の出力の仕方も教えていただけますでしょうか?
これもごめんなさい。そこまでスキル/経験が。。。
先達のご登場に期待しましょう。
    • good
    • 1

あっゴメンなさい。


>Application.VBE.Windows("イミディエイト").Visible = True
の行は不要ですので削除してかまいません。

イミディエイトウィンドウを表示させるためのモノなのですが
Excelのオプションから『セキュリティセンターの設定』
マクロの設定→VBA プロジェクト オブジェクトモデルへのアクセスを信頼する
にチェックを入れていないとエラーになってしまいます。
規定値ではチェックは入っていません。
つい、うっかり。。。
標準出力の結果は取得できてますね。こっちの方は問題なさそうです。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。

sCmdに自分の実行したいコードを入れてみたのですが
うまくいきません。

oshietegooとは関係のないffprobeを使ったコード
sCmd = ffprobe_path & " -i " & file_path2 & " -show_format | grep duration"
を入れているのに
なぜか出力される変数は以下のものになってしまいます。

: sStr : "
oshiete.goo.ne.jp [153.254.147.236]に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。

153.254.147.236 の ping 統計:
パケット数: 送信 = 1、受信 = 0、損失 =


sStr = GetObject("\", "htmlfile").ParentWindow.ClipboardData.GetData("text")
のところで、("\", "htmlfile")とか書かれていますが、
この辺りはどのように設定すれば良いのでしょうか?

お礼日時:2015/05/19 15:15

exec メソッドを使用する目的が標準出力の取得なら



Sub てすと()
Dim oWS As Object, sCmd As String, sStr As String

Set oWS = CreateObject("Wscript.Shell")
sCmd = "ping oshiete.goo.ne.jp -n 1"
oWS.Run "%ComSpec% /c " & sCmd & "|clip", 0, True
sStr = GetObject("\", "htmlfile").ParentWindow.ClipboardData.GetData("text")
Application.VBE.Windows("イミディエイト").Visible = True
Debug.Print sStr
Set oWS = Nothing
End Sub

では?
clip はWindows Vista 以降で使用可。
リンク先のに手を加えようかとも思いましたが面倒だったのでゴメン。
    • good
    • 0
この回答へのお礼

ありがとうございます。
試してみましたが、
Application.VBE.Windows("イミディエイト").Visible = True
のところでエラーが発生します。



実行時エラー 1004
VBEメソッドは失敗しました、Applicationオブジェクト

というエラーメッセージが表示されます。



実行時エラー 1004
プログラミングによるVisual Basicプロジェクトへのアクセスは信頼性に欠けます

というのが出る場合もあります。



sStr変数には
oshiete.goo.ne.jp [153.254.147.236]に ping を送信しています 32 バイトのデータ:
要求がタイムアウトしました。

153.254.147.236 の ping 統計:
パケット数: 送信 = 1、受信 = 0、損失 = 1 (100% の損失)、
という文字列が入っています。

環境はwin7 64bit、Excel2010です。

何が問題でしょうか?

お礼日時:2015/05/19 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A