2010-05-19 2 views
0

У меня есть сценарий, который извлекает информацию из электронной таблицы Excel (Mac Excel'04) и обрабатывает ее через локальную базу данных. Моя проблема (временная, ожидающая выделенной скриптовой машины w/Excel '08) - это когда мне нужно работать с другой таблицей в Excel. Я хочу, чтобы AppleScript продолжал считывать данные из правильной электронной таблицы.Скажите AppleScript перейти к определенному окну в Excel

Есть ли способ передать ссылку на конкретный файл Excel в AppleScript, а не просто написание приложения в целом? Или, возможно, просто ссылаетесь на таблицу, не открывая ее ...?

ответ

0

Если я правильно понял, вы хотите запустить скрипт, который работает в данной книге во время работы над другим.

следующая конструкция должна сделать трюк:

tell application "Microsoft Excel" 
    set WB_Name to name of workbook 1 

    tell workbook WB_Name 
     -- Do your stuff 
    end tell 
end tell 

К сожалению, вы не можете работать на «закрытых» документов ...

НТН

1

я определил один раз для всех в отдельном Lib эта функция (среди многих других)

on getActiveBookAndSheet() 
    try 
     tell application "Microsoft Excel" 
      set theBook to workbook (get name of active workbook) 
      set theSheet to worksheet (get name of active sheet) of theBook 
      # set theSheet to worksheet (get entry index of active sheet of theBook) -- alternative 
      return {theBook, theSheet} 
     end tell 
    on error 
     error "Could't find any opened document in Excel." 
    end try 
end getActiveBookAndSheet 

Сохранено это как ExcelLib. приложение в папке «Общий» в «Компьютерных Scripts» папка

В начале каждого AppleScript, связанный с Excel, добавить эту строку:

set myExcelLib to load script alias ((path to library folder as string) & "Scripts:Common:ExcelLib.app") 

И когда приходит время, чтобы получить книгу и лист , я просто использую это:

set {myBook, mySheet} to myExcelLib's getActiveBookAndSheet() 

Тогда каждый раз, когда вы хотите работать на определенном диапазоне листа, просто сделать это таким образом:

set value of range "A2:F3" of mySheet to "etc." -- for a single line 

или

tell mySheet 
set value of range "A2:F3" to "etc." -- if you need to perform a whole list of operations 
end 
Смежные вопросы