Я определил раз и навсегда в отдельной библиотеке эту функцию (среди многих других)
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