Using ruby to open an Excel file on a mac

  • Thread starter Ryan Westerberg
  • Start date
R

Ryan Westerberg

Hello everyone,

I have a bit of an issue that I'm trying to work through pertaining to
opening an excel file I want to open using ruby. I tried looking in
google and all sorts of places but all I could really find is how to
open a new file of Excel. This I can do no problem, however I am unable
to open an existing file.


I am currently using:

Mac OS X v 10.4.11 PowerPC G4.
Ruby v1.8.6
Rubygems v1.3.4


On the mac my beginning code looks like this

#!/usr/local/bin/env ruby

require 'rubygems'
require 'appscript'


#This script retrieves the data from excel and puts it into arrays
class Test_arraydata

def EXTCOdata(*arrays listed here, removed for security purposes)
begin

#opens excel
$excel=Appscript.app('Microsoft Excel')
workbook=$excel.activate('\Automation\Safari\<Data location>')

If anyone could help me out with this, it would be greatly appreciated.

Thank you.
 
M

Matt Neuburg

Ryan Westerberg said:
Hello everyone,

I have a bit of an issue that I'm trying to work through pertaining to
opening an excel file I want to open using ruby. I tried looking in
google and all sorts of places but all I could really find is how to
open a new file of Excel. This I can do no problem, however I am unable
to open an existing file.


I am currently using:

Mac OS X v 10.4.11 PowerPC G4.
Ruby v1.8.6
Rubygems v1.3.4


On the mac my beginning code looks like this

#!/usr/local/bin/env ruby

require 'rubygems'
require 'appscript'


#This script retrieves the data from excel and puts it into arrays
class Test_arraydata

def EXTCOdata(*arrays listed here, removed for security purposes)
begin

#opens excel
$excel=Appscript.app('Microsoft Excel')
workbook=$excel.activate('\Automation\Safari\<Data location>')

So, you're doing this with appscript? Well then, in the first place,
"activate" is not "open" (and in any case "activate" doesn't take any
arguments, and doesn't return a value). If you mean "open", say "open".

Next we come to your argument. What is that funny string with backward
slashes? If it is meant to be a posix path, it would need forward
slashes.

But in any case, "open" does not take a posix path. You need to use an
alias (i.e. a MacTypes::Alias). So, for example:

require 'appscript'
f = MacTypes::Alias.path("/Users/mattleopard/Desktop/testing.xls")
excel = Appscript.app("Microsoft Excel")
excel.activate
excel.open f

I can't tell whether what you need to learn is AppleScript or
rb-appscript, but I have a written a print book about the one and an
online book about the other:

AppleScript:

http://oreilly.com/catalog/9780596102111/

rb-appscript:

http://www.apeth.com/rbappscript/00intro.html

Hope this helps - m.
 
R

Ryan Westerberg

I have another question pertaining to individual tabs in the excel
workbook itself. I looked through the link on appscript that you sent
and maybe I missed it and if I did my apologies.

In windows I'm able to to do the following in order to get data from
different worksheets within the excel workbook

worksheet1= workbook.Worksheets('Testdata')
worksheet2= workbook.Worksheets('Items')

I have workbook defined as:
workbook = MacTypes::Alisas.path(/insert path here/workbookname.xls)

This should be the last question I have. Thanks for again for the help
 
M

Matt Neuburg

Ryan Westerberg said:
I have another question pertaining to individual tabs in the excel
workbook itself. I looked through the link on appscript that you sent
and maybe I missed it and if I did my apologies.

In windows I'm able to to do the following in order to get data from
different worksheets within the excel workbook

worksheet1= workbook.Worksheets('Testdata')
worksheet2= workbook.Worksheets('Items')

I have workbook defined as:
workbook = MacTypes::Alisas.path(/insert path here/workbookname.xls)

This should be the last question I have. Thanks for again for the help

But this is what I mean about learning AppleScript / appscript. What you
are really asking, I think, is just "how do I refer to worksheets of a
workbook?" But Excel's scripting dictionary tells you that, clearly.
This is very basic stuff. The stuff I linked you to tells you how to
read the scripting dictionary, discover the worksheets element of a
workbook object, and use it within rb-appscript. For the scripting
dictionary, see chapter 8 of the online book:

http://www.apeth.com/rbappscript/08dictionary.html

If nothing else, you could just say (assuming you've installed
ASDictionary, ):

require 'appscript'
excel = Appscript.app("Microsoft Excel")
excel.workbooks.help

And chapter 5 of the online book tells you how to form the desired
reference:

http://www.apeth.com/rbappscript/05propel.html

Incidentally, Hamish Sanderson has just released a new version of
rb-appscript so be sure to update it (along with ASDictionary and
ASTranslate). I'll be updating the online book Real Soon Now to take
account of the changes. m.
 
R

Ryan Westerberg

Thanks again for the response. I will admit that I have never really
programmed before, never really taken a class. Was asked to do this for
a project where I work and been stumbling along trying to learn as I go.
So my apologies on being a little slow on not knowing the basics.
 
M

Matt Neuburg

Ryan Westerberg said:
Thanks again for the response. I will admit that I have never really
programmed before, never really taken a class. Was asked to do this for
a project where I work and been stumbling along trying to learn as I go.
So my apologies on being a little slow on not knowing the basics.

You're doing very well, don't worry! Contact me directly by email if you
need to, but I think you'll find if you'll take a day to *read* the
online rb-appscript documentation I've written, the answers to your
questions so far are there. m.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,073
Latest member
DarinCeden

Latest Threads

Top