0

我是applescript的新手,对此的任何帮助将不胜感激。我认为对于比我有更多技能的人来说,这将是一个很好的挑战。所有描述的都是在 Snow Leopard 和 MS Office 2011 中完成的。

我有一个 URL 列表(从单元格 Q2 开始),并且我有 applescript 来执行以下一系列任务:

  1. 打开 MS Excel
  2. 创建新工作簿
  3. 从 MS Excel 单元格 Q2 复制 URL。
  4. 粘贴到 Firefox 地址栏并继续。
  5. 单击 Firefox 菜单栏功能“View1”(来自附加组件)
  6. 单击 Firefox 菜单栏功能“View2”(来自附加组件)
  7. 单击 Firefox 菜单栏功能“复制所有表格”(来自附加组件)
  8. 在 Excel 中创建新工作簿
  9. 将复制的文本粘贴到新工作簿单元格 A1
  10. 将新工作簿另存为 workbook002.xlsx
  11. 关闭工作簿

我已经为此编写了下面的脚本,它可以工作。问题是我不能让它重复。需要repeat函数来重复整个脚本的执行,首先将单元格Q2更改为Q3,依此类推,直到最后一个单元格包含值0,即结束循环的信号,并用名称保存每个工作簿按顺序(workbook002 然后 workbook003 等)。我认为不需要更改 firefox 部分,因为步骤始终相同。

这是脚本:

do shell script "open -a /Applications/Microsoft\\ Office\\ 2011/Microsoft\
\ Excel.app ~/Desktop/KospiSection2.xlsx"
tell application "Microsoft Excel"
set sourceBook to workbook "Section2.xlsx"
set sourceRange to get range "Q2" of sheet 1 of sourceBook
copy range sourceRange
end tell
tell application "Firefox"
activate
tell application "System Events"
tell process "Firefox"
click menu item "PasteGo" of menu "Tools" of menu bar 1
delay 3
click menu item "View1" of menu "View" of menu bar 1
delay 10
click menu item "View2" of menu "View" of menu bar 1
delay 2
click menu item "Copy all Tables (2)" of menu "Edit" of menu bar 1
delay 3
click menu item "Close Tab" of menu file of menu bar 1
end tell
end tell
end tell
tell application "Microsoft Excel"
make new workbook
delay 2
tell active sheet of active workbook
paste worksheet destination range "A1"
delay 2
end tell
end tell
do shell script "save as -a /Applications/Microsoft\\ Office\\ 2011/Microsoft\\
Excel.app ~/Desktop/workbook002.xlsx"

如果有人能弄清楚如何做到这一点,真诚地感谢。很长一段时间以来,我一直在为此头疼。ps如果有人知道一本关于用applescript运行excel的好书,请告诉我。

再次感谢!

4

1 回答 1

0

好吧......你需要的东西:

  • 识别递归,即程序更改的地方......你提到它:

range "Q2" of sheet 1 of sourceBook 应该进化range "Q3" of sheet 1 of sourceBook

在 applescript 术语中,您将编写如下行:

set sourceRange to get range ("Q" & i) of sheet 1 of sourceBook

并处理“i”变量。请注意,此“i”变量也将出现在工作簿的名称中

"workbook002.xlsx"变成("workbook00" & i & ".xlsx")

  • 您还必须确定递归停止的位置。在我们的例子中,意思是“i”的最大值。假设我们的示例为 20。您的代码变为:

tell application "Microsoft Excel"

set sourceBook to workbook "Section2.xlsx"

repeat with i from 2 thru 20
   set sourceRange to get range ("Q" & i) of sheet 1 of sourceBook
   ...
   set outputFileName to "workbook00" & i & ".xlsx" -- Well there should be some work on the name so that it looks like what you expect, but that's another thing)
   save workbook as active workbook filename ({path to desktop folder as string, outputFileName} as string) with overwrite -- keep the 'save as' action within the loop, and within the "tell Excel"     
   end -- repeat

end tell

这应该可以解决问题...

于 2013-07-25T07:44:42.227 回答