1

Excel VBA から実行したい Jruby/Celerity スクリプトがいくつかあり、スクリプトの結果を Excel シートに出力します。これは可能ですか?誰でも潜在的なアプローチや潜在的なリソースを提案できますか?

私が達成したいこと:

  1. Mac Excel 2011 VBA コードは Celerity スクリプトを呼び出し、スクリプトで使用されるパラメーターを渡します。
  2. スクリプトは、VBA から渡されたパラメーターを使用して実行されます。
  3. スクリプトは実行を完了し、結果を Excel ワークシートに返します。

編集: Mac で Excel 2011 を実行していることにも言及する必要があります。私が混乱している分野の 1 つは、Ruby を使用した Excel の自動化に関して私が見つけたすべてが、Windows オペレーティング システムを想定しているように見えることです。(# WIN32OLE ライブラリが必要です)。OS X で Excel を実行している同じライブラリを使用しますか?

どうもありがとう。

4

1 に答える 1

2

例による解決策

simpletest.rb

require "rubygems"
require "celerity"

word_to_search = ARGV[0]
word_to_check = ARGV[1]
#puts "DEBUG - word_to_search: #{word_to_search}"
#puts "DEBUG - word_to_check: #{word_to_check}"
browser = Celerity::Browser.new
browser.goto('http://www.google.com')
browser.text_field(:name, 'q').value = word_to_search
browser.button(:name, 'btnG').click
puts browser.text.include? word_to_check

いくつかの入力パラメーターを受け取り、結果を返すこの単純なスクリプトを使用して、Mac 上の Excel 2011とやり取りする必要があるとします。

test.sh

#!/bin/bash --login
rvm use jruby > NULL
ruby simpletest.rb $1 $2

VBA コードを介して呼び出すことができるシェルを作成します。chmod u+x test.sh 適切なパーミッションを設定#!/bin/bash --loginするように注意してください rvmcelerity

VBA モジュール ( ユーザー定義関数 )

Public Function SimpleTest(sWordToSearch, sWordToCheck)
    Dim sCommand As String
    sCommand = "do shell script ""cd /Users/ronda/projects/so-test1; ./test.sh "
    sCommand = sCommand & sWordToSearch & " "
    sCommand = sCommand & sWordToCheck & """"
    SimpleTest = MacScript(sCommand)
End Function

このコードの注意:/Users/ronda/projects/so-test1はスクリプトへのパスです

使用法とテスト

数式でのユーザー定義関数のテスト

SimpleTest のユーザー定義関数の使用法

ところで、問題の診断は、スクリプトをより低いレベルで実行することによって合理化される場合があります。

AppleScript edtor でのテストここに画像の説明を入力

ターミナルでのシェル スクリプトのテスト

$ cd ~/projects/so-test1  
$ ./test.sh Ruby Language
true
$ ./test.sh Fish Language
false

jruby スクリプトをスタンドアロンでテストする

$ rvm use jruby
Using /Users/ronda/.rvm/gems/jruby-1.7.11
$ ruby simpletest.rb Ruby Language
true
$ ruby simpletest.rb Ruby Fish    
false

参考文献

便利なリンクをいくつか:

  1. popen と pipesを使用した代替 (おそらく最も強力な) アプローチとして、 Excel VBA for Mac 2011 から HTTP GET を発行するにはどうすればよいですか?に対するこの回答をお読みください。
  2. カスタム関数へのアクセス
于 2014-07-09T20:31:50.187 に答える