技術ブログを書いたほうがいいということで書き綴ってみた

技術ブログを書いたほうがいいということで書き綴ってみた

Excelからバッチファイルを引数つきで起動

Hyperlink関数ではだめだった

Hyperlink関数でやろうとしたが、 セルに記載された引数を使っての引数渡しでのバッチ起動ができなかったので、結局、マクロでやった。

マクロからShell関数でできる

Sub Execute()
Dim cmd As String
cmd = "C:\Windows\notepad.exe c:\memo.txt"
Shell cmd
End Sub

これでmemo.txtがメモ帳で開くことができます。

今度は、 引数をマクロに渡します。

Sub Execute(ByVal param1 As String, ByVal param2 As String, ByVal param3 As String)
Dim cmd As String
cmd = "C:\sample.bat "
cmd = cmd & "c:memo.txt "
cmd = cmd & " " & param1
cmd = cmd & " " & param2
cmd = cmd & " " & param3
Shell cmd
End Sub

ダブルクリックした場所の相対位置は、Offsetで取得できる

今度は、セルに入力された情報を引数にして、マクロを実行します。 4行目より下で4列目をダブルクリックするとマクロが引数付きで実行されます。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not (Target.Row >= 4 And Target.Column = 4) Then Exit Sub
  Execute Target.Offset(0, -3).Value, Target.Offset(0, -2).Value, Target.Offset(0, -1).Value
End Sub

1列目と2列目と3列目が引数として渡されます。

これを応用すれば、いろんなことがExcelでできる!!!