3
我用VBA代碼中有一個極大數行其中一些我要更新這組十的東西歲Excel工作簿。於是我只好寫在Ruby的單元測試的這個瘋狂的想法...
問題
我怎麼能叫Ruby中的Excel宏?
我有什麼到目前爲止
我
- Excel工作簿中所謂的 「C:\ TEMP \ Test.xlsm」
- 與所謂的 「工作表Sheet1」,並 的表
- 單元格「A1」。
此外,該Excel工作簿
- 包含一個名爲 「模塊1」
- 一個叫
WriteToA1()
和 - 另一個宏叫
ClearA1()
另外,我有宏模塊看起來像這樣的Ruby腳本:
require 'test/unit'
require 'win32ole'
class TestDemo < Test::Unit::TestCase
def testExcelMacro
# Arrange
excel = WIN32OLE.new("Excel.Application")
excel.Visible = true
excel.Workbooks.Open('C:\temp\Test.xlsm')
# Act
excel.run "Sheet1!WriteToA1"
# Assert
worksheet = excel.Workbooks.ActiveWorkbook
assert_equal("blah", worksheet.Range("A1").Value)
excel.Quit
end
end
異常
我得到這個例外
WIN32OLERuntimeError: (in OLE method `run':)
OLE error code:800A03EC in Microsoft Excel
Cannot run the macro 'Sheet1!WriteToA1'. The macro may not be available in this workbook or all macros may be disabled.
HRESULT error code:0x80020009
Exception occurred.
描述here我已啓用所有宏在Excel中。
Excel正在啓動,「Test.xlsm」打開。一定有什麼錯行:
excel.run "Sheet1!WriteToA1"
我也試過這樣:
excel.run "Sheet1!Module1.WriteToA1"
試試這個'excel.run「Test!WriteToA1」' –