2013-07-23 3 views
0

저는 AppleScript를 처음 접했고 이에 대한 도움을 주시면 매우 감사하겠습니다. 나는 이것이 나보다 더 많은 기술을 가진 누군가에게 좋은 도전이 될 것이라고 생각한다. 모든 것은 MS 오피스와 스노우 레오파드 (Snow Leopard)에서 수행 2011 년AppleScript 루프/반복 기능 (Excel에서 Firefox 사용)

내가 (세포 Q2부터) URL 목록을하고 난 다음 태스크를 실행할 AppleScript를 가지고있다 설명 :

  1. MS Excel 열기
  2. 새 통합 문서 만들기
  3. URL을 MS Excel 셀 Q2에서 복사하십시오.
  4. Firefox 주소창에 붙여넣고 이동하십시오.
  5. (추가 기능에서) 파이어 폭스 메뉴 표시 줄 기능 '뷰 1'를 클릭
  6. (추가 기능에서) 파이어 폭스 메뉴 표시 줄 기능 '뷰 2'를 클릭
  7. 파이어 폭스 메뉴 표시 줄 기능 '복사 모든 테이블'(클릭 추가 기능)에서
  8. 은 Excel에서 새 통합 문서의 셀 A1에
  9. 붙여 넣기 복사 된 텍스트
  10. 저장 새 통합 문서
  11. 닫기 통합 문서 workbook002.xlsx 등을 새 통합 문서 만들기
,

나는 이것을 위해 아래의 스크립트를 조합했다. 문제는 내가 반복 할 수 없다는 것이다. repeat 함수는 전체 스크립트의 실행을 반복하기 위해 먼저 Q2를 Q3으로 변경하고 마지막 셀에는 루프를 끝내기위한 신호 인 값 0이 포함 된 지점까지 반복하고 각 통합 문서를 이름과 함께 저장합니다 순차 순서대로 (workbook002, workbook003 등). 단계가 항상 동일하기 때문에 파이어 폭스 부분을 변경해야한다고 생각하지 않습니다. 누군가가이 작업을 수행하는 방법을 알아낼 수 있다면

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" 

진심으로 감사 :

여기 스크립트입니다. 나는 오랜 시간 동안 내 머리를 부러 뜨 렸어. p.s. 누구든지 달리기에 대한 좋은 책을 아는 경우 AppleScript로 알려주십시오.

다시 한번 감사드립니다!

답변

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"변수에서 작동합니다.이 "나는"변수는 통합 문서

"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

이 트릭을 할해야 ...

+0

이것은 큰 도움이되었다. 내가 가진 유일한 문제는 엑셀 사전에서 찾을 수없는 새로운 통합 문서를 출력 파일 이름으로 저장할 수 없다는 것이었지만 시트 1, 시트 2 등으로 저장했습니다. 어떤 것이 더 좋을지 알기 위해 파일을 저장 한 가장 최근 위치에 파일을 저장합니다. 스크립트가 실행 된 후에 파일 이름을 automator로 바꿀 수 있습니다. –

+0

안녕하세요 @ osbourne.cox! 통합 문서를 Excel 사전에 저장하는 방법이 있습니다. 명령은 "통합 문서를 저장"이며 다음과 같이이 방법을 사용합니다 : '통합 문서를 활성 통합 문서 파일 이름으로 저장 ({문자열로 된 바탕 화면 폴더의 경로, "myOutputFileName"} 문자열로 덮어 씀) 덮어 쓰기 with 제발 ' 답변에 투표하는 것을 잊지 마세요 :) – Zitoun