告诉AppleScript转到Excel中的特定窗口

时间:2010-05-19 16:04:58

标签: excel applescript applescript-excel

我有一个脚本从Excel(Mac Excel'04)电子表格中提取信息,并通过本地数据库处理它。我的问题(这是暂时的,等待专用脚本机器与Excel '08)是我需要在Excel中使用另一个电子表格。我想确保AppleScript继续从正确的电子表格中读取数据。

有没有办法在AppleScript中传递对特定Excel文件的引用,而不是仅仅告诉应用程序?或者可能只是引用电子表格而不必打开它??

2 个答案:

答案 0 :(得分: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.app,位于“计算机脚本”文件夹中的“常用”文件夹中

在与Excel相关的每个Applecript的开头,我添加了这一行:

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

答案 1 :(得分:0)

如果我理解正确,您希望在处理另一个工作簿时启动适用于给定工作簿的脚本。

以下构造应该可以解决这个问题:

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

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

不幸的是,您无法处理“已关闭”的文档......

HTH