I'm writing a script to edit an excel file. I'm testing if it collects information from a user.
require 'rubygems'
require 'win32ole'
print "filpath?"
$filepath = $stdin.gets
print "sheet?"
$sheetname = $stdin.gets
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.workbooks.Open($filepath)
worksheet = workbook.Worksheets($sheetname)
worksheet.Cells(2,2).Value = 10
workbook.saved = true
workbook.Save
excel.ActiveWorkbook.Close(0)
excel.Quit()
When I put my file path in the script directly, it works fine. It can look up the excel file and edit it normally. However, when I collect it from a gets statement, it gives me this error message:
test.rb:20:in `method_missing': (in OLE method `Open': ) (WIN32OLERuntimeError)
OLE error code:800A03EC in Microsoft Excel
Sorry, we couldn't find C:\filename.xlsx
. Is it possible it was moved, renamed or deleted?
HRESULT error code:0x80020009
Exception occurred.
from test.rb:20:in `<main>'
Not sure what is happening. I would love any help.
The end line character is appended to the file name when you receive it with gets, but probably your file is not named as such. Add .chomp after gets. It is also better to check the existence and the accessibility of the file before passing it to win32ole.
User contributions licensed under CC BY-SA 3.0