はじめに
前回の記事で、会社支給のパソコンにRuby
をインストールすることに成功しました。
VBA最強ではありますが、速度やネットワーク関連でRubyを呼び出したいところです。
ここでは、次の記事を参照しています。
VBAソース
VBA
Option Explicit
Public Sub puts_Ruby01()
Dim suji1 As String
Dim suji2 As String
Dim rb_file As String
suji1 = "3"
suji2 = "5"
Dim WSH
Dim wExec
Dim cmd_str As String
Set WSH = CreateObject("WScript.Shell")
rb_file = ThisWorkbook.Path & "\puts_hello.rb"
cmd_str = "ruby " & rb_file & " " & suji1 & " " & suji2
cmd_str = Replace(cmd_str, "\", "/")
Set wExec = WSH.Exec("%ComSpec% /c " & cmd_str)
Do While wExec.Status = 0
DoEvents
Loop
Debug.Print Val(wExec.StdOut.ReadAll) 'CMDから結果を受け取る
Set wExec = Nothing
Set WSH = Nothing
End Sub
ここでは、イミディエイトウィンドウにDebug.Printしています。
Ruby側ソース
ruby
puts ARGV.map(&:to_i).sum
ARGVは配列です。
実行結果
まとめ
- VBA と ruby の連携を行った
- @O_LUPAN さん、ありがとう