Скажите AppleScript, чтобы перейти к определенному окну в Excel - PullRequest
0 голосов
/ 19 мая 2010

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

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

Ответы [ 2 ]

1 голос
/ 17 апреля 2013

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

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.app в папке «Common» в папке «Computer 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
0 голосов
/ 09 июня 2010

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

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

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

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

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

НТН

...