Archive for the 'Excel 2011' Category

2016/05/12 表計算ソフトの選択範囲のデータをMarkdown形式の表テキストに変換する

「技術書典」に向けてAppleScript本をMarkdownエディタ「MacDown」で快調に執筆中の今日このごろ。世の中にあふれるMarkdownエディタから厳選してMacDownに行き着きました。

md0.png

一応、最低限レベルながらAppleScriptに対応しているMarkdownエディタは「MacDown」だけでした。

AppleScript対応/非対応を問わず、メジャーなエディタを調べてこれが一番よかったのは……本Blogに掲載している色分けプログラムリスト(HTML)を本文中にペーストして、テキストとしてではなくそのままHTMLとして解釈して表にレンダリングしてくれたこと(仕様的に微妙な点なので、将来にわたって維持されるかどうかは不明)。

md11_resized.png

他のエディタでは本文中にHTMLのタグを入れるという手は使えませんでした(Tableタグだけで実験したので、もしかするともうちょっといろいろやってみると認識されたのかも??)。

そんな、自分のニーズにばっちり合っているMacDownですが、使っているうちにいろいろ山のように不満も出てくるもので、そのうちのひとつに「表データを入れにくい」というものがありました。

スクラッチでゼロから表を起こすのには、Markdown書式の軽量マークアップの表タグはとてもいいと思うのですが、「ありもののデータがすでに存在している」場合には、少々困ってしまうところです。

あまりにあまねく誰もが直面する問題なので、すでにどこかで誰かが同じような変換ツールを書いている可能性が高いですが、この程度ならたいした手間はかからないので、AppleScriptで書いてしまいました。

まずは、Markdown書式における表の作り方を確認。

header1|header2|header3
—|—|—
col1|col2|col3
col4|col5|col6
col7|col8|col9

最低限、こんな風に書いておけば表として認識されるようです(MacDown v0.6上で確認。他のエディタでは傾向が違うかも)。

md00_resized.png

ヘルプファイルやサンプルなどではもっとスペースを入れてきれいに書いてありましたが、そんなきれいに書く必要はないことがわかりました。

excel1.png

まずは、Microsoft Excel版(バージョン14.6.3にて確認)。Excel上のデータを選択してAppleScriptを実行すると、Markdown形式の表データがクリップボードに転送されます。MacDownにはselection(選択範囲)という予約語がないので、選択範囲に対して転送するという手が使えないため、クリップボードに転送しておいてユーザーにペースト動作を行ってもらおうというところです。

numbers1_resized.png

次に、Numbers(v3.6.2)版。Numbersのドキュメント上でデータを選択しておくと、Markdown形式の表データがクリップボードに転送されます。Excelバージョンのプログラムを流用するために、Excelと同様のデータの取得方法を行うルーチンをもってきました(すでに作ってあった)。Numbersの選択範囲のデータの返し方がアレでナニなのでやや苦労していますが、サブルーチンの再利用ですぐに差し替えできました。

md10_resized.png

AppleScript名:Excelの選択範囲を取得してMarkdown書式の表に変換する
– Created 2016-05-12 by Takaaki Naganoya
– 2016 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”

set aSeparator to “|”
–set aCell to “—:” –Align Right
set aCell to “:—:” –Align Center
–set aCell to “:—” –Align Left

set aLineTerminator to return

tell application “Microsoft Excel”
  set aSel to string value of selection
end tell

if aSel = “” then
  tell current application
    display dialog “Excelのワークシート上で何も選択されていません” with icon 2 buttons {“OK”} default button 1 with title “選択範囲エラー”
    
return
  end tell
end if

–選択範囲の横幅チェック、ヘッダー部のデータ作成
set colNum to length of (contents of first item of aSel)
set sepList to {}
repeat colNum times
  set end of sepList to aCell
end repeat

–ヘッダーセパレータを配列の2番目に挿入する
set newList to insListItem(aSel, sepList, 2) of me

–Markdown書式の表を文字列で作成し、クリップボードに転送する
set outStr to “”
repeat with i in newList
  set outStr to outStr & retStrFromArrayWithDelimiter(contents of i, aSeparator) of me & aLineTerminator
end repeat

set the clipboard to outStr –クリップボードに転送

–指定のリスト(2次元配列)に、要素(1次元配列)を、指定箇所(1はじまり)にインサートする
on insListItem(aList as list, insList as list, insertItemNum as integer)
  set newList to {}
  
set itemCounter to 1
  
repeat with i in aList
    if itemCounter = insertItemNum then
      set the end of newList to insList
    end if
    
set end of newList to (contents of i)
    
set itemCounter to itemCounter + 1
  end repeat
  
return newList
end insListItem

–リストを指定デリミタをはさんでテキスト化
on retStrFromArrayWithDelimiter(aList as list, aDelim as string)
  set anArray to current application’s NSArray’s arrayWithArray:aList
  
set aRes to anArray’s componentsJoinedByString:aDelim
  
return aRes as text
end retStrFromArrayWithDelimiter

on retArrowText(aList as list, aDelim as string) –自分のASでよく使うハンドラ名称なので、同じものを用意
  return my retStrFromArrayWithDelimiter(aList, aDelim)
end retArrowText

★Click Here to Open This Script 

AppleScript名:Numbersの選択範囲を取得してMarkdown書式の表に変換する
– Created 2016-05-12 by Takaaki Naganoya
– 2016 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”

set aSeparator to “|”
–set aCell to “—:” –Align Right
set aCell to “:—:” –Align Center
–set aCell to “:—” –Align Left

set aLineTerminator to return

–Numbersの選択範囲からExcel仕様で2Dリストを返す
set aSel to get2DListFromNumbersSelection() of me

if aSel = “” then
  tell current application
    display dialog “Numbersのワークシート上で何も選択されていません” with icon 2 buttons {“OK”} default button 1 with title “選択範囲エラー”
    
return
  end tell
end if

–選択範囲の横幅チェック、ヘッダー部のデータ作成
set colNum to length of (contents of first item of aSel)
set sepList to {}
repeat colNum times
  set end of sepList to aCell
end repeat

–ヘッダーセパレータを配列の2番目に挿入する
set newList to insListItem(aSel, sepList, 2) of me

–Markdown書式の表を文字列で作成し、クリップボードに転送する
set outStr to “”
repeat with i in newList
  set outStr to outStr & retStrFromArrayWithDelimiter(contents of i, aSeparator) of me & aLineTerminator
end repeat

set the clipboard to outStr –クリップボードに転送

–指定のリスト(2次元配列)に、要素(1次元配列)を、指定箇所(1はじまり)にインサートする
on insListItem(aList as list, insList as list, insertItemNum as integer)
  set newList to {}
  
set itemCounter to 1
  
repeat with i in aList
    if itemCounter = insertItemNum then
      set the end of newList to insList
    end if
    
set end of newList to (contents of i)
    
set itemCounter to itemCounter + 1
  end repeat
  
return newList
end insListItem

–リストを指定デリミタをはさんでテキスト化
on retStrFromArrayWithDelimiter(aList as list, aDelim as string)
  set anArray to current application’s NSArray’s arrayWithArray:aList
  
set aRes to anArray’s componentsJoinedByString:aDelim
  
return aRes as text
end retStrFromArrayWithDelimiter

on retArrowText(aList as list, aDelim as string) –自分のASでよく使うハンドラ名称なので、同じものを用意
  return my retStrFromArrayWithDelimiter(aList, aDelim)
end retArrowText

–テキストを指定デリミタでリスト化
on parseByDelim(aData, aDelim)
  set aText to current application’s NSString’s stringWithString:aData
  
set aList to aText’s componentsSeparatedByString:aDelim
  
return aList as list
end parseByDelim

on get2DListFromNumbersSelection()
  –Numbersで選択範囲を縦に区切ったリストを返す
  
tell application “Numbers”
    tell document 1
      tell sheet 1
        tell table 1
          try
            set selList to value of every cell of selection range –選択範囲のデータを取得
          on error
            return “” –何も選択されてなかった場合
          end try
          
          
set selName to name of selection range –選択範囲のrange情報を取得
          
set {s1, s2} to parseByDelim(selName, “:”) of me
          
          
–始点の情報を取得する
          
set s1Row to (address of row of range s1) as integer
          
set s1Column to (address of column of range s1) as integer
          
          
–終点の情報を取得する
          
set s2Row to (address of row of range s2) as integer
          
set s2Column to (address of column of range s2) as integer
          
          
–選択範囲の情報を取得する
          
set selHeight to s2Row - s1Row + 1 –高さ(Height of selection range)
          
set selWidth to s2Column - s1Column + 1 –幅(Width of selection range)
          
        end tell
      end tell
    end tell
  end tell
  
  
set aLen to length of selList
  
set aaLen to selHeight
  
  
set bList to {}
  
repeat with i from 1 to aaLen
    set aHoriList to {}
    
    
repeat with ii from 1 to selWidth
      set j1 to ii + (i - 1) * selWidth
      
set tmpCon to contents of item j1 of selList
      
      
set aClass to class of tmpCon
      
if aClass = number or aClass = integer or aClass = real then
        set tmpCon to tmpCon as integer
      end if
      
      
set the end of aHoriList to tmpCon
    end repeat
    
    
set the end of bList to aHoriList
  end repeat
  
  
return bList
  
end get2DListFromNumbersSelection

★Click Here to Open This Script 

2012/04/30 Microsoft Office v2011 14.2.1アップデートで辞書に変更なし

先日公開された「Microsoft Office 2011 14.2.1 更新プログラム」でアップデートされた、Excel、Outlook、PowerPoint、WordのAppleScript用語辞書にとくに変更がないことを確認しました。

2012/04/21 Office v.2011 Service Pack 2による変更点

2012/4/13にOffice v.2011 サービスパック2(バージョン14.2.0)がオンライン配布開始となりました。

例によって、アップデート後にAppleScript用語辞書をAS Dictionaryで書き出して,前バージョンの用語辞書の内容と比較を行ってみました。

 Excel 14.1.2→14.2 変更なし
 Outlook 14.1.2→14.2 変更あり(大規模な変更)
 PowerPoint 14.1.4→14.2 変更あり(「player」関連のオブジェクト、命令が追加に)
 Word 14.1.4→14.2 変更なし

……Outlookについては、日常的に使用していないので用語辞書変更の影響度合いはなんとも言えないのですが、SP2で加えるレベルではないほどの追加(あくまで個人的な意見)が行われています。

2012/03/06 Excelの表中のデータを拾ってセルに色を付ける

Excelの表中のデータを拾ってセルに色を付けるAppleScriptです。

Excelの表の中にR,G,Bのデータが1〜5セット、空きのセットには-1,-1,-1が入っている状態で表のI〜W列を拾って、A〜E列のセルに色を付けます。行は1行目から41行目までサーチしますが、このあたりはお好きに直して使うとよろしいでしょう。

xls.jpg

スクリプト名:表中のデータを拾ってセルに色を付ける
set colCellList to {“A”, “B”, “C”, “D”, “E”}
set dataCellList to {{“I”, “J”, “K”}, {“L”, “M”, “N”}, {“O”, “P”, “Q”}, {“R”, “S”, “T”}, {“U”, “V”, “W”}}

tell application “Microsoft Excel”
  tell sheet 1
    repeat with i from 1 to 41
      
      
–1行分のループ
      
repeat with j from 1 to 5
        
        
set aColCell to (contents of item j of colCellList) & i as string
        
        
set aDataRangeBeginStr to (contents of first item of item j of dataCellList) & i as string
        
set aDataRangeEndStr to (contents of last item of item j of dataCellList) & i as string
        
        
set aRange to range (aDataRangeBeginStr & “:” & aDataRangeEndStr)
        
set aData to value of aRange
        
        
if aData = {{-1.0, -1.0, -1.0}} then –データが入っていない箇所には-1を入れてある
          exit repeat
        end if
        
        
set color of interior object of cell aColCell to first item of aData
        
      end repeat
      
    end repeat
  end tell
end tell

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

2012/02/29 Excel 2011で現在表示中のウィンドウのすべてのタブのズーム倍率を変更する

Excel 2011で現在表示中のウィンドウのすべてのシートのズーム倍率を変更するAppleScriptです。

Windowsユーザーの方からExcelの書類をメールでいただいたりすると……表示倍率が75%だったり50%だったりで、そのままMacBook Pro 17インチの1920×1200ドットの本体画面で表示すると、小さすぎて……見えません。

下手にタブ(シート)が大量に存在していたりすると、表示倍率を変更するのがうっとおしいことこの上ありません。そこで、すべてのシートを順次表示させて表示倍率を変更するAppleScriptを書いてみました。

Excelのファイルオープンの動作すべてをトラップして、ファイルオープン後に必ずこの処理を加えたくなるほどです。PFiddleSoft(旧称:PreFab Software)の「UI Actions」を併用して、メニュー項目にフォルダアクションよろしくScriptを仕掛けて、「ファイルを開く」メニュー項目の実行後に本Scriptを実行できるとよいのですが……

スクリプト名:Excel 2011で現在表示中のウィンドウのすべてのタブのズーム倍率を変更する
set zoomNum to 150 –表示倍率(10〜400)

tell application “Microsoft Excel”
  
  
tell window 1
    set curSheetNum to entry_index of active sheet –あとでこのシートの表示状態に戻す  
  end tell
  
  
tell workbook 1
    set sList to every sheet
    
repeat with i in sList
      set j to contents of i
      
      
–表示対象のWorksheet(タブ)を切り替える
      
tell j
        activate object
      end tell
      
      
–現在表示中のExcelのウィンドウの表示倍率を変更する
      
changeZoomOfCurrentExcelWindow(zoomNum) of me
    end repeat
  end tell
  
  
tell workbook 1
    activate object worksheet curSheetNum –初期表示状態に戻す
  end tell
  
end tell

–Excel 2011で現在表示中のウィンドウのズーム倍率を変更する
on changeZoomOfCurrentExcelWindow(aZoomPercent)
  tell application “Microsoft Excel”
    tell window 1
      set zoom to aZoomPercent
    end tell
  end tell
end changeZoomOfCurrentExcelWindow

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

2012/02/23 Excel 2011ですべてのタブのデータを取得して1つにまとめる v3

Excel 2011で現在オープン中の書類のすべてのタブのデータを取得して新規ドキュメントで1つにまとめるAppleScriptの改良版です。

最初のバージョンでは、すべてのタブを順次表示しながらデータを集めていましたが、別にデータを集めるだけなら表示を切り替える必要はまったくないので、表示を切り替えるのをやめたのがこのバージョンです。

元のバージョンから比べると、かなり速くなっています(見てわかるほどに)。

スクリプト名:Excel 2011ですべてのタブのデータを取得して1つにまとめる v3
–アクティブなExcelワークブック(書類)中のすべてのワークシートの内容を取得して、新規作成したワークブック(書類)にまとめる

global aList, aList_r

set aList to {}
set aList_r to a reference to aList

tell application "Microsoft Excel"
  
  
–最前面のドキュメント中の各シート名を取得
  
tell active workbook
    set sList to name of every worksheet
    
set aCount to count every item of sList
  end tell
  
  
–各ワークシートの呼び出しループ
  
repeat with i from 1 to aCount
    set aList to aList_r & getCurrentSheetData(i, 100, "C", "L") of me –これ以上は存在していない筈の行数
  end repeat
  
end tell

–新規ワークシートを作成してそこに連結したデータを入れる
set dataLen to (length of aList)
tell application "Microsoft Excel"
  set newWS to make new workbook
  
tell newWS
    tell active sheet
      set tmpRangeStr to "A2:L" & ((dataLen + 1) as string)
      
set tmpRange to range tmpRangeStr
      
set value of tmpRange to aList
    end tell
  end tell
end tell

–現在表示中のワークシートから、データの入っている範囲を求めて中のデータを返す
on getCurrentSheetData(workSheetIndex, maxRowNum, checkColumnStr, endColumnStr)
  –Excelからデータを取得する
  
using terms from application "Microsoft Excel"
    tell application "Microsoft Excel"
      tell active workbook
        tell sheet workSheetIndex
          
          
set tmpRange to checkColumnStr & (maxRowNum as string)
          
set a to range tmpRange –B列にはかならずデータが入っている & 100行もデータは存在していない
          
set b to get end a direction toward the top
          
set endRow to first row index of b
          
          
set aRangeStr to "A2:" & endColumnStr & (endRow as string) –1行目には凡例が入っているためスキップ
          
set aRangeObj to range aRangeStr
          
          
set rangeDat to string value of aRangeObj
          
          
return rangeDat
          
        end tell
      end tell
    end tell
  end using terms from
end getCurrentSheetData

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

2012/02/21 Excel 2011で現在オープン中の書類の選択中のシートをCSV書き出し

Excel 2011のCSV書き出しのサンプルを探していたら、現在オープン中の書類(Workbook)中のすべてのシート(Worksheet)をCSV書き出しするAppleScriptを見つけました。

そこまでの処理は必要なかったので、逆に機能を切り捨てて、最低限の機能に絞り込んでサンプルコードとして掲載しておくことに。

スクリプト名:Excel 2011で指定書類の現在のワークシートをCSV書き出し
–オリジナル作者および引用元:
– Excel Spreadsheet to CSV Files
– by Scott Wilcox <scott@dor.ky>
– https://github.com/dordotky/applescripts
– https://github.com/dordotky/applescripts/blob/master/Excel%20Worksheets%20to%20CSV.applescript

– CSV ファイルを書き出すフォルダを選択
set outFol to (choose folder with prompt "CVSファイルの書き出し先フォルダを選択:")

tell application "Microsoft Excel"
  activate
  
  
tell active sheet
    set wName to name
    
    
– Save the worksheet as a CSV file
    
set theSheetsPath to outFol & wName & ".csv" as string
    
save as filename theSheetsPath file format CSV file format with overwrite
  end tell
  
  
close every workbook saving no –クローズ
  
end tell

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

2012/02/14 Excel 2011ですべてのタブのデータを取得して1つにまとめる

Excel 2011で最前面のドキュメント中のすべてのワークシートの内容を新規書類にまとめるAppleScriptです。

最前面のドキュメント(workbook)内のすべてのワークシート(worksheet)のデータ存在行範囲を(C列のデータをもとに)検出して、横方向にはA〜Lまでのデータを取り出します。

ex1.jpg

すべてのワークシート内のデータを取り出したあと、Excelで新規書類を作成して、そこにまとめたデータを入れます。

Excelで書類に大量のワークシート(タブ)を作って、快調にデータを入力していたところ、ワークシートに別れているのでデータの見通しがきかなくなって……手作業でまとめるのがいやだったので、その場でAppleScriptを組んでまとめさせるようにしてみました。

スクリプト名:Excel 2011ですべてのタブのデータを取得して1つにまとめる
–アクティブなExcelワークブック(書類)中のすべてのワークシートの内容を取得して、

global aList, aList_r

set aList to {}
set aList_r to a reference to aList

tell application "Microsoft Excel"
  
  
–現在表示中のワークシートのindex番号を取得する
  
tell window 1
    set curSheetNum to entry_index of active sheet –あとでこのシートの表示状態に戻す
  end tell
  
  
–最前面のドキュメント中の各シート名を取得
  
tell active workbook
    set sList to name of every worksheet
    
set aCount to count every item of sList
  end tell
  
  
repeat with i from 1 to aCount
    tell workbook 1
      activate object worksheet i –★★ 表示切り換え用の変な命令
    end tell
    
    
set aList to aList & getCurrentSheetData(100) of me –これ以上は存在していない筈の行数
    
  end repeat
  
  
–表示状態を元に戻す
  
tell workbook 1
    activate object worksheet curSheetNum –初期表示状態に戻す
  end tell
  
end tell

–新規ワークシートを作成してそこに連結したデータを入れる
set dataLen to (length of aList)
tell application "Microsoft Excel"
  set newWS to make new workbook
  
tell newWS
    tell active sheet
      set tmpRangeStr to "A2:L" & ((dataLen + 1) as string)
      
set tmpRange to range tmpRangeStr
      
set value of tmpRange to aList
    end tell
  end tell
end tell

aList

–現在表示中のワークシートから、データの入っている範囲を求めて中のデータを返す
on getCurrentSheetData(maxRowNum)
  –Excelからデータを取得する
  
using terms from application "Microsoft Excel"
    tell application "Microsoft Excel"
      tell active workbook
        tell active sheet
          set tmpRange to "C" & (maxRowNum as string)
          
set a to range tmpRange –B列にはかならずデータが入っている & 100行もデータは存在していない
          
set b to get end a direction toward the top
          
set endRow to first row index of b
          
          
set aRangeStr to "A2:" & "L" & (endRow as string)
          
set aRangeObj to range aRangeStr
          
          
set rangeDat to string value of aRangeObj
          
        end tell
      end tell
    end tell
  end using terms from
end getCurrentSheetData

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

2011/11/09 Excel 2011で表示中のワークブック内のすべてのシートの表示状態を変更する v2

Excel 2011で、表示中の書類(ワークブック)内のすべてのシートの表示状態を変更するAppleScriptです。

Windowsユーザーから受け取ったExcel書類を開くと、なぜか高確率で表示倍率が100%以下になっており、しかも表示形式がページ区切りになっていたりで、ドットの細かいMacBook Pro 17インチあたりでオープンすると、かなり見づらいです。さらに、それをすべて手作業で変更するのはけっこう手間がかかります。

そこで、全ワークシートの表示倍率を100%に、表示形式を通常表示に切り換えるAppleScriptを作った次第です。

スクリプト名:Excel 2011で表示中のワークブック内のすべてのシートの表示状態を変更する v2

–最前面の(ドキュメントの)Windowの表示状態になっているシート名を取得
tell application “Microsoft Excel”
  tell window 1
    set curSheetNum to entry_index of active sheet –あとでこのシートの表示状態に戻す
  end tell
end tell

tell application “Microsoft Excel”
  –最前面のドキュメント中の各シート名を取得
  
tell active workbook
    set sList to count every worksheet
  end tell
  
  
–ループで各シートに指定
  
repeat with i from 1 to sList
    
    
–表示対象のワークシートを切り換え
    
tell workbook 1
      activate object worksheet i –★★ 表示切り換え用の変な命令
    end tell
    
    
–表示倍率などを設定
    
tell window 1
      set view to normal view –レイアウト表示を通常表示に
      
set zoom to 100 –表示ズーム倍率設定
    end tell
    
  end repeat
  
end tell

–最前面の(ドキュメントの)Windowの表示状態になっているシート名を取得
tell application “Microsoft Excel”
  tell workbook 1
    activate object worksheet curSheetNum –初期表示状態に戻す
  end tell
end tell

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

2011/07/10 Excelの最前面のウィンドウの表示倍率を連続して変更する

Microsoft Excel 2011の最前面のウィンドウの表示倍率を連続して変更するAppleScriptです。

こういうこともできる、というデモぐらいの意味合いのものです。

Excel 2011では、ポップアップメニューから200%までの表示を指定可能
excel2011_1.jpg

100%表示
excel2011_2.jpg

200%表示
excel2011_3.jpg

300%表示
excel2011_4.jpg

400%表示
excel2011_5.jpg

400%以上の指定はできないようになっています。
excel2011_6.jpg

スクリプト名:Excelの最前面のウィンドウの表示倍率を連続して変更する 
tell application "Microsoft Excel"
  tell window 1
    repeat with i from 100 to 400 by 100
      set zoom to i
      
delay 1
    end repeat
  end tell
end tell

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

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/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

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