最終更新:
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) ' 返り値を代入したら解決した


最新コメント