最終更新: bokkuri_orz 2014年08月23日(土) 23:27:16履歴
Execは実行結果を受け取りたいときに使用します。
Runのように、外部プログラム呼び出し時にそのウィンドウを非表示にする制御は出来ないようです。
Runは表示/非表示等のウィンドウの制御が出来ます。
●外部プログラムを実行し、コンソールに出力される情報を1行ずつ取得してセルに書き込むサンプル。
Dim wsh, exec As Object Set wsh = CreateObject("WScript.Shell") Dim command As String command = "dir /B" Set exec = wsh.exec("%ComSpec% /c " + command) Dim items As Variant Dim count As Integer count = 0 ' 実行結果を1行ずつ読み込んでセルに出力する Dim lineStr As String Do Until exec.StdOut.AtEndOfStream lineStr = exec.StdOut.ReadLine ActiveSheet.Cells(count + 1, 1).value = lineStr count = count + 1 Loop Set exec = Nothing Set wsh = Nothing
●外部プログラムを実行し、処理が全て終わってから標準出力をまとめて取得する
Private Declare Sub Sleep Lib "kernel32" (ByVal waitTime As Long) ' WindowsAPIの宣言。ソース先頭の方で宣言しておく Dim wsh, exec As Object Set wsh = CreateObject("WScript.Shell") Dim command As String command = "ipconfig" Set exec = wsh.exec("%ComSpec% /c " + command) ' 外部プログラムが終了するまでループする Do Until exec.Status Sleep 10 Loop ' 標準出力をまとめて取得する result = exec.StdOut.ReadAll Set exec = Nothing Set wsh = Nothing
MS-DOSコマンドの標準出力を取得する
http://officetanaka.net/excel/vba/tips/tips27.htm
VBAで外部プログラムを非表示で実行するには
※DoEvents は使わずに、Sleep 推奨という話題です。
http://okwave.jp/qa/q8490086.html
WshShellオブジェクトの詳細
http://www.atmarkit.co.jp/ait/articles/0407/08/new...
Windows API:VB6・VBAでの宣言一覧
http://note.phyllo.net/?eid=1106222
マウスカーソルがフォーム上に存在するときにイベントが発生し、座標を取得できます。
フォーム外では取得できません。
デスクトップの左上を(0,0)とした値になります。
' 2次元座標構造体 Private Type POINT x As Long y As Long End Type ' API宣言 Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINT) As Long ' フォームのMouseMoveイベント Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Dim p As POINT Dim msg As String ret = GetCursorPos(p) msg = "(" & p.x & "," & p.y & ") - (" & x & "," & y & ")" LabelMousePos.Caption = msg End Sub
ActiveSheet.Cells.Find("word") ' これはOK ActiveSheet.Cells.Find("word", LookIn:=xlValues) ' 引数を増やすとエラー発生 Dim range As Range Set range = ActiveSheet.Cells.Find("word", LookIn:=xlValues) ' 返り値を代入したら解決した
最新コメント