Archive for 6月, 2011

2011/06/28 Mindjet MindManager 9 for Macが登場

MindjetのMind Mapソフトウェア「MindManager」のバージョン9 Mac版が発表されました

iPhone/iPad版も登場し、MindMapソフトウェアの決定版である本ソフト、お試し版をダウンロードして確認してみたら、AppleScript用語辞書も健在。AppleScript的にはv8と何ら変更点はないのですが、iWork/MS-Officeへのデータ書き出し機能が強化され、Windows版との機能差が少なくなった点が新機軸。

ただ…………やはり、本ソフトの問題点はあまりに高いその価格。機能を考えると3.5万円は高いと思います。それだけ出せばFileMaker Pro v11が買えそうな値段です。

2011/06/15 Mail.appで指定のメールアカウントのみイネーブルに

Mail.appで複数のメールアカウントのみイネーブルにするAppleScriptです。

Mail.appに複数のメールアカウントを登録していて、職場や自宅などでメールアカウントの切り替えを行いたいような場合に使用します。

イネーブルにする対象は、Mail.appのメニューから「環境設定」で表示される環境設定ウィンドウの中の、「アカウント」で表示されるメールアカウントです。

mail_acc.jpg

Mail.appで場所に応じてメールアカウントの制御をしなくてはならず、最初は「送受信スケジュール」から当該のメールアカウントを外してみたのですが……恐ろしいことに、オフにしたはずのメールボックスへの送受信が行われたりしていました。そこで、メールアカウントそのもののオン/オフ制御を行う必要がある、と考えた次第です。

スクリプトメニューに入れて呼び出すと便利です。

mail1.jpg

スクリプト名:Mail.appで指定のメールアカウントのみイネーブルに
set eList to {“職場”, “Gmail”}

tell application “Mail”
  set enabled of every account to false
  
repeat with i in eList
    set j to contents of i
    
tell account j
      set enabled to true
    end tell
  end repeat
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

ちなみに、すべてのメールアカウントをイネーブルにする場合には、このように記述します。

スクリプト名:Mail.appですべてのアカウントをイネーブルに
tell application “Mail”
  set enabled of every account to true
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/13 Keynoteの各slideのtitleから目次のテキストを作成する

iWork 09のKeynote 5.0.5で、各スライド(slide)のタイトルを読み取って目次のテキストを作成するAppleScriptです。

本Scriptでslideのtitleを取得するためには、スライドを作成する際にKeynoteのテンプレート(マスタースライド)機能を用いて、Keynoteが期待しているtitle欄の枠を使用するようにKeynote書類を作る必要があります。

自分は、無地のマスタースライドを選んで、好き勝手に文字やらグラフィックを配置するのが好きなのですが、そのやり方では(膨大な資料をKeynoteで作ってしまうと)目次を作ったり連番のスライドのリナンバー作業が大変です。

AppleScriptからデータを取りやすいよう、根本的に作業スタイルを変えてみました。新規スライド作成(ページの追加)時にはかならずマスタースライドを適用するようにしました。逆に、この機能を利用してスライドを作らないとAppleScriptからタイトルの取得を行おうとしても無意味な値しか返ってきません。

key1.jpg
▲表紙のタイトル部分のスライド。マスタースライドで「タイトル(中央)」を指定している

key2.jpg
▲内容部分のスライド。マスタースライドで「タイトル(上)」を指定している

スライド中で、1つの内容について複数枚にわたって説明するようなケースがあり、もし3枚に渡って説明する場合には、

「ひよこさんの特徴(1/3)」「ひよこさんの特徴(2/3)」「ひよこさんの特徴(3/3)」

などとタイトル末尾にナンバーを振ることになっています(慣習上)。

目次データ作成時にはこのナンバーを振っている内容については同一内容であると認識して、(2/3)や(3/3)は目次に含めないようにしています。

key4.jpg

key5.jpg

key6.jpg

ためしに、あるKeynote書類の目次をこのAppleScriptで作ってみました。

実行結果:
2 メディアの変遷
5 コンピュータ/通信業界「主役」の変遷
6 携帯キャリアを軸とした情報通信における競合と協業
7 ラジオ関連のタイムテーブル
8 V-Lowデジタルラジオに対するNHKの見解
9 V-HighとV-Lowの電波帯域
10 デジタルラジオの技術的仕様
11 参考資料:ISDB放送規格
12 参考資料: マルチメディア放送企画LLC合同会社
13 参考資料:V-LOW放送の地域ソフト会社一覧
14 デジタルラジオ受信機とは何か?
15 デジタルラジオ放送は「聴いただけでは分からない」
16 音声コンテンツへの需要は?
17 いまやリアルタイム視聴・聴取は不可能
18 各放送メディアのトレンド
19 ユーザーの可処分時間の最後のフロンティアは「移動時間」
20 貴重な移動時間を活用できるのが音声コンテンツの強み

このように、Keynoteでプレゼン資料というよりは、文字中心でページ数の多い仕様書や報告書を作った場合でも、AppleScriptでタイトルを走査してかんたんに目次用のテキストを作成できます。

個人的には、ものすごく助かりました。

スクリプト名:Keynoteの各slideのtitleから目次のテキストを作成する
set separatorC to “(” –「(1/3)」の形式で連番を振っている場合の最初のカッコを書いておく。ここでは、全角カッコを想定

–Keynoteの各slideのタイトルを取得する
set aList to {}

tell application “Keynote”
  tell slideshow 1
    set aList to title of every slide
  end tell
end tell

–各タイトルにすでに「(1/2)」のようなナンバリングが行われていたらナンバリング部分を削除する
set newList to {}

repeat with i in aList
  set j to contents of i
  
  
set aPos to offset of separatorC in j
  
if aPos is not equal to 0 then
    set j to text 1 thru (aPos - 1) of j
  end if
  
  
set the end of newList to j
end repeat

–目次を作成する
set sPage to 3 –ページ数カウンタ
set curItem to second item of newList
set newList2 to items 3 thru -1 of newList

set outList to {{2, curItem}} –出力用データ

repeat with i in newList2
  set j to contents of i
  
  
if j = curItem then
    –何もしない
  else
    set curItem to j
    
set the end of outList to {sPage, j}
  end if
  
  
set sPage to sPage + 1
  
end repeat

set aText to retItemDelimedAndParagraphDelimedText(outList, tab, return) of me

–入れ子のリストを、アイテム間のデリミタとパラグラフ間のデリミタを指定してテキスト化
–というか、入れ子のリストをタブ区切りテキストにするのが目的
on retItemDelimedAndParagraphDelimedText(aList, itemDelim, paragraphDelim)
  set aText to “”
  
  
repeat with i in aList
    set aStr to retDelimedText(i, itemDelim) of me
    
set aText to aText & aStr & paragraphDelim
  end repeat
  
  
return aText
end retItemDelimedAndParagraphDelimedText

on retDelimedText(aList, aDelim)
  set aText to “”
  
set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to aDelim
  
set aText to aList as text
  
set AppleScript’s text item delimiters to curDelim
  
return aText
end retDelimedText

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/10 Keynoteの各slideのtitleで、同じものが続く箇所に連番を振り直す

Keynote 5.0.5(iWork 09)で、現在オープン中のKeynote書類の各スライドのタイトルをスキャンして、タイトル末尾に「(1/3)」のように連番を振っている箇所に、連番を振り直すAppleScriptです。

AppleScriptからは、煮ても焼いても喰えなかったKeynoteでしたが、かなり有用性の高いAppleScriptができたように思います。まだ、実地での検証が不足していますが……それでも、枚数のやたらと多い資料などを作ってしまいがちな人には便利な道具になることでしょう。

スクリプト名:Keynoteの各slideのtitleで、同じものが続く箇所に連番を振り直す
set separatorC to "(" –「(1/3』」の形式で連番を振っている場合の最初のカッコを書いておく。ここでは、全角カッコを想定

–Keynoteの各slideのタイトルを取得する
set aList to {}

tell application "Keynote"
  tell slideshow 1
    set aList to title of every slide
  end tell
end tell

–各タイトルにすでに「(1/2)」のようなナンバリングが行われていたらナンバリング部分を削除する
set newList to {}

repeat with i in aList
  set j to contents of i
  
  
set aPos to offset of separatorC in j
  
if aPos is not equal to 0 then
    set j to text 1 thru (aPos - 1) of j
  end if
  
  
set the end of newList to j
end repeat

–重複箇所の情報を取得する
set sList to detectRepetition(newList) of me
if sList = {} then
  tell application "Keynote"
    display dialog "とくに、連番を振り直す必要のある箇所はないようです" buttons {"OK"} default button 1 with icon 1
  end tell
  
return
end if

–重複箇所情報をもとに連番を振り直す
set tList to {}

repeat with i in sList
  set {fromNum, endNum} to i
  
set totalNum to endNum - fromNum + 1
  
  
set preStr to contents of item fromNum of newList
  
  
set ttList to {}
  
repeat with ii from 1 to totalNum
    set aStr to ((preStr & "(" & ii as string) & "/" & totalNum as string) & ")"
    
set item (ii + fromNum - 1) of newList to aStr –newListの内容を書き換えている
  end repeat
  
end repeat

–連番を振り直したリストを元に、Keynoteの各slideのtitleを変更する
tell application "Keynote"
  tell slideshow 1
    set sCount to count every slide
    
repeat with i from 1 to sCount
      tell slide i
        set title to contents of item i of newList
      end tell
    end repeat
  end tell
end tell

–リスト中の値が連続する箇所をアイテム番号のリストで返す
on detectRepetition(aList)
  
  
set curItem to first item of aList
  
set aList to rest of aList
  
  
set aCount to 1
  
set sucF to false
  
  
set sList to {}
  
set curList to {}
  
  
repeat with i in aList
    set j to contents of i
    
if curItem is equal to j then
      if sucF = true then
        –何もしない。データの連続部分の中をスキャン中  
      else
        set curItem to j
        
set curList to {aCount}
        
set sucF to true
      end if
    else
      if sucF = true then
        –連続部分の末尾を見つけた
        
set the end of curList to aCount
        
set the end of sList to curList
        
set curList to {}
        
set curItem to j –ここを修正した
        
set sucF to false
      else
        –なにもしない
        
set curItem to j
      end if
    end if
    
    
set aCount to aCount + 1
  end repeat
  
  
if sucF = true then
    set the end of curList to aCount
    
set the end of sList to curList
  end if
  
  
return sList
  
end detectRepetition

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/10 リスト中の値が連続する箇所をアイテム番号のリストで返す v2

リスト中の値が連続する箇所をアイテム番号のリストで返すAppleScriptの修正版です。

実際にほかのルーチンと組み合わせてみたら間違いが判明したので修正しました。

さきほどの、

{”プロジェクト階層図”, “ストレージ仕様”, “データ仕様”, “年間仕様”, “年間仕様”, “年間仕様”, “YP仕様”, “YP仕様”, “YP仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”}

というデータを処理した場合に、先ほどは……

{{4, 6}, {8, 9}, {11, 17}}

という結果が返ってきていましたが、本当は……

{{4, 6}, {7, 9}, {10, 17}}

が返ってこなくてはならなかったのでした。連続部分の末尾を見つけた直後の動作が一部おかしかったので、そこだけ修正しました。

スクリプト名:リスト中の値が連続する箇所をアイテム番号のリストで返す v2
set aList to {"プロジェクト階層図", "ストレージ仕様", "データ仕様", "年間仕様", "年間仕様", "年間仕様", "YP仕様", "YP仕様", "YP仕様", "月間仕様", "月間仕様", "月間仕様", "月間仕様", "月間仕様", "月間仕様", "月間仕様", "月間仕様"}

set sList to detectRepetition(aList) of me

sList
–> {{4, 6}, {7, 9}, {10, 17}}

–リスト中の値が連続する箇所をアイテム番号のリストで返す
on detectRepetition(aList)
  
  
set curItem to first item of aList
  
set aList to rest of aList
  
  
set aCount to 1
  
set sucF to false
  
  
set sList to {}
  
set curList to {}
  
  
repeat with i in aList
    set j to contents of i
    
if curItem is equal to j then
      if sucF = true then
        –何もしない。データの連続部分の中をスキャン中  
      else
        set curItem to j
        
set curList to {aCount}
        
set sucF to true
      end if
    else
      if sucF = true then
        –連続部分の末尾を見つけた
        
set the end of curList to aCount
        
set the end of sList to curList
        
set curList to {}
        
set curItem to j –ここを修正した
        
set sucF to false
      else
        –なにもしない
        
set curItem to j
      end if
    end if
    
    
set aCount to aCount + 1
  end repeat
  
  
if sucF = true then
    set the end of curList to aCount
    
set the end of sList to curList
  end if
  
  
return sList
  
end detectRepetition

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/10 FileMaker Proで書き出したTab区切りテキストファイルをExcelで読み込む

FileMaker Proで書き出したTab区切りテキストファイルをExcel 2011で読み込むAppleScriptです。

Tab区切りテキストであればとくにFileMaker Proが書き出したものでなくてもかまいません。

スクリプト名:ExcelでTab区切りテキストを読み込む
set aFile to choose file
set aFile to aFile as string

tell application "Microsoft Excel"
  –指定のTab区切りテキストファイルを読み込む
  
open text file filename aFile data type delimited with tab
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/10 リスト中の値が連続する箇所をアイテム番号のリストで返す

リスト中の値が連続する箇所をアイテム番号のリストで返すAppleScriptです。

{”プロジェクト階層図”, ”ストレージ仕様”, ”データ仕様”, ”年間仕様”, ”年間仕様”, ”年間仕様”, ”YPLAN仕様”, ”YPLAN仕様”, ”YPLAN仕様”, ”月間仕様”, ”月間仕様”, ”月間仕様”, ”月間仕様”, ”月間仕様”, ”月間仕様”, ”月間仕様”, ”月間仕様”}

というリストがあった場合に、本Scriptを実行すると、

{{4, 6}, {8, 9}, {11, 17}}

という結果が得られます。これは、4〜6アイテム目、8〜9アイテム目そして11〜17アイテム目が同一内容が連続していることを示しています。

Keynoteで仕様書を作っていたら、どんどん内容が増えてしまい、

「どこかの部分の仕様(1/3)」

などと書いておいたものが、あとからあとから「(1/3)」の部分が変更になって、なんでこんなものを人の手で更新しなければならないのだとイライラが最高潮に。

おもむろにAppleScriptエディタを立ち上げ、AppleScriptでしばらくKeynoteをこづき回していたところ、各slideのtitleの取得および設定ができることを確認。

ふだん、Keynoteで書類を作る場合にはKeynoteが用意している「マスタースライド」の機能は完全に無視して、「空白」のマスタースライドの上に好き勝手にアイテムを配置していたのですが……あえてマスタースライドの機能を利用すると、きちんとslideのtitle属性部分に各ページのタイトルが入ることを確認。

「じゃあ、AppleScriptでKeynoteのスライドのタイトルを取得して連続部分のリナンバーをさせればよいのではないか?」

と、思い立ち……アイデアだけメモっておいて実際に作りはじめてみた次第です。

本ルーチンはその処理を実現するためのキーとなるものであり、もう少し組めば実現でき……るのではないでしょうか?

スクリプト名:リスト中の値が連続する箇所をアイテム番号のリストで返す
set aList to {“プロジェクト階層図”, “ストレージ仕様”, “データ仕様”, “年間仕様”, “年間仕様”, “年間仕様”, “YPLAN仕様”, “YPLAN仕様”, “YPLAN仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”, “月間仕様”}

set sList to detectRepetition(aList) of me

sList
–> {{4, 6}, {8, 9}, {11, 17}}

–リスト中の値が連続する箇所をアイテム番号のリストで返す
on detectRepetition(aList)
  
  
set curItem to first item of aList
  
set aList to rest of aList
  
  
set aCount to 1
  
set sucF to false
  
  
set sList to {}
  
set curList to {}
  
  
repeat with i in aList
    set j to contents of i
    
if curItem is equal to j then
      if sucF = true then
        –何もしない。データの連続部分の中をスキャン中  
      else
        set curItem to j
        
set curList to {aCount}
        
set sucF to true
      end if
    else
      if sucF = true then
        –連続部分の末尾を見つけた
        
set the end of curList to aCount
        
set the end of sList to curList
        
set curList to {}
        
set curItem to “”
        
set sucF to false
      else
        –なにもしない
        
set curItem to j
      end if
    end if
    
    
set aCount to aCount + 1
  end repeat
  
  
if sucF = true then
    set the end of curList to aCount
    
set the end of sList to curList
  end if
  
  
return sList
  
end detectRepetition

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/07 OS X 10.7でAppleScriptの機能が追加されるもよう

本日WWDCのキーノートスピーチで発表され、AppleのWebサイト上で「250を超える新機能」が紹介されました。

AppleScript関連の新機能も掲載されており

aas.jpg

感心するやら、「なんでこれが紹介されていない?」と不満を覚えるやら…………(もごもご)…………あんなバグやこんなバグが直っているとかいないとか、さまざまな感想はありますが、それはさておき。

発表された内容について検証してみることとしましょう。

■Cocoa AppleScriptアプレット

Mac OS X 10.6で装備されたAppleScriptObjCのことと思われます。OS X 10.7上で作成した「Cocoa AppleScriptアプレット」がMac OS X 10.6.x上でも動作するのかどうかは不明です。

Mac OS X 10.6上ではAppleScriptObjCはXcode上でしか記述できませんでした。それが、AppleScriptエディタの上でも書けるようになる、ということでしょう。OSA言語ポップアップメニューで「AppleScript」と「AppleScriptObjC」を選択して記述することになるのか、ほかの方法で通常のAppleScriptとAppleScriptObjCを切り替えるのかは不明です。

AppleScriptObjCをAppleScriptエディタ上で記述できるといっても、GUIを作れない(はず)とか、さまざまな制約があるはずなので、どの程度の用途を見込んでいるのかはいまひとつ不明です。

この件に関しては、AppleScriptObjCに関するドキュメントがAppleからほとんど出てきていないため、ドキュメントが整備されるのかどうか、というあたりが最大のみどころでしょう(いまのままの状態だとサイテーです)。

■スクリプトのテンプレート

これは、各Scripterが自前で用意していたものが、AppleScriptエディタ標準で提供するようになったということで、とくに目新しいことではありません。

ユーザーが新たにテンプレートを追加できるようになったりすると便利でしょう。

■スクリプトのターゲットアプリケーションをグローバルに指定

いまひとつ使い道がはっきりしない、「対象アプリケーション」ポップアップの機能を強化した…………もののように見えますが、すでに発表段階で「あまり役に立たなさそうな気配」が漂っています。

■アプリケーション実行のメニューオプション

AppleScriptエディタ上とアプレット書き出しして実行した時でAppleScriptの挙動が部分的に変わってしまうことが、たまにあります。アプレットとして実行する機能が追加されたということのようですが、その時にログを出しながら実行するとか……デバッグ系の機能がどの程度使えるのか、あるいはまったく使えないのか……といったあたりが見どころです。

2011/06/07 iTunes 10.3β AppleScript用語辞書に変更なし

本日、β版が公開されたiTunes 10.3のAppleScript用語辞書を現行のiTunes 10.2.2と比較してみたところ、変更点がないことを確認しました。

いろんな意味で、ドキドキさせられます。

追記:
iTunes 10.3.1βでもAppleScript用語辞書には変更はありませんでした。

2011/06/07 QuickTimeムービーの縦横ドット数を取得する

現在オープン中のQuickTimeムービーの縦横ドット数を取得するAppleScriptです。

スクリプト名:QuickTimeムービーの縦横ドット数を取得する
tell application "QuickTime Player"
  tell document 1
    set {aWidth, aHeight} to natural dimensions
  end tell
end tell
–>{640, 480}

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/05 FileMaker Proで表示中のレコードのデータ内容をCSV書き出し

FileMaker Pro v11で表示中(検索してレコード数をしぼりこみ中)のレコードのデータ内容をCSV書き出しするAppleScriptです。

FileMaker Proのデータベースで検索を行って、レコード数をしぼりこんで……

fm1.jpg

条件の合うレコードのみにしぼりこみ、

fm2.jpg

本Scriptを実行すると……書き出すファイル名を聞いてくるので、それに答えると、

fm3.jpg

のように、CSV書き出しを行います。最初から、書き出し先のパス情報を、「Macintosh HD:Users:Hiyoko:Desktop:test.csv」のように持っておけば、冒頭のchoose file nameでユーザーに問い合わせる必要はありません。

書き出しを行う対象フィールドは、そのときに表示されていたレイアウトに依存します。つまり、すべてのフィールドを書き出したい場合には、一時的に「すべてのフィールドが配置されているレイアウト」に表示を切り替える必要があります(このあたり、ちょっとめんどう)。

それにしても……最新のFileMaker Pro v11にAppleScriptの資料が同梱されていないとは。資料の内容もあまり分かりやすいとはいえなかったものの、まったく付属していないというのもいささか問題でしょう。

スクリプト名:FileMaker Proで表示中のレコードのデータ内容をCSV書き出し
set aNewFile to choose file name –あくまでサンプルなので。普通はあらかじめパスのテキストを組み立てて渡すべし

–FileMaker Proで現在表示中(検索して絞り込み状態)のレコードのデータを取得する
–得られるフィールドは、表示中にレイアウトに依存する
tell application “FileMaker Pro”
  tell window 1
    set dataList to every record
  end tell
end tell

saveAsCSV(dataList, aNewFile) of me

–CSV書き出し
–ただし、データ内にダブルクォートが入っていた場合に備えてのサニタイズ処理は行っていない
on saveAsCSV(aList, aPath)
  set crlfChar to (ASCII character 13) & (ASCII character 10)
  
set LF to (ASCII character 10)
  
set wholeText to “”
  
repeat with i in aList
    set aLineText to “”
    
set curDelim to AppleScript’s text item delimiters
    
set AppleScript’s text item delimiters to “\”,\”"
    
set aLineList to i as text
    
set AppleScript’s text item delimiters to curDelim
    
    
set aLineText to repChar(aLineList, return, “”) of me –データの途中に改行が入っていた場合には削除する
    
set aLineText to repChar(aLineText, LF, “”) of me –データの途中に改行が入っていた場合には削除する
    
    
set wholeText to wholeText & “\”" & aLineText & “\”" & crlfChar –行ターミネータはCR+LF
  end repeat
  
  
if (aPath as string) does not end with “.csv” then
    set bPath to aPath & “.csv” as Unicode text
  else
    set bPath to aPath as Unicode text
  end if
  
  
write_to_file(wholeText, bPath, false) of me
  
end saveAsCSV

–ファイルの追記ルーチン「write_to_file」
–追記データ、追記対象ファイル、boolean(trueで追記)
on write_to_file(this_data, target_file, append_data)
  try
    set the target_file to the target_file as text
    
set the open_target_file to open for access file target_file with write permission
    
if append_data is false then set eof of the open_target_file to 0
    
write this_data to the open_target_file starting at eof
    
close access the open_target_file
    
return true
  on error error_message
    try
      close access file target_file
    end try
    
return error_message
  end try
end write_to_file

–文字置換
on repChar(origText, targChar, repChar)
  set origText to origText as string
  
set targChar to targChar as string
  
set repChar to repChar as string
  
  
set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to targChar
  
set tmpList to text items of origText
  
set AppleScript’s text item delimiters to repChar
  
set retText to tmpList as string
  
set AppleScript’s text item delimiters to curDelim
  
return retText
end repChar

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

2011/06/05 Excelのアクティブなワークシートをコピーして新規ワークブックを作成

Office 2011のExcel(Excel 2011)で、現在アクティブなワークシート(表示中のワークシート)をコピーして、そのデータで別のワークブックを新規作成するAppleScriptです。

このようなExcelの書類があったときに、本Scriptを実行すると……

ex1s.jpg

このように、元のSheetの内容を使って新規Workbookが作成されます。

ex2s.jpg

スクリプト名:Excelのアクティブなワークシートをコピーして新規ワークブックを作成
tell application “Microsoft Excel”
  tell active workbook
    tell active sheet
      copy worksheet
    end tell
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に