AppleScriptによってMicrosoft Excel(以下Excel)を自動化する方法を説明します。Excelの説明書にはいっさいAppleScriptに関する記述はありませんので、多少は役に立つかもしれません。最初に断っておきますが、Excel中の処理を行うだけなら Visual Basic for Application (VBA) を使用した方が便利です。AppleScriptは、あくまで他のアプリケーションとの連携を行うためのツールだと思って下さい。
必要なものはExcel v4.0以降、AppleScript v1.1以降です。Excelは現在v5.0になっていますが、スクリプティングの基本については変化ありません。ただし、v4.0ではFormulaをうまく扱えなかったり、データのクラスが未設定だったりします。
Excelを使うためのサンプルをサンプルスクリプトのページに収録しています。そちらも併せてご覧下さい。
尚、この解説文は現在作成中です。あまりあてになりませんので、気をつけて使用して下さい (^ ^;)
1. セルの指定方法 Excelでは、セルの指定に行(Row)と列(Column)を使用します。行は「上から何番目(1,2,3...)」、列は「左から何番目(A,B,C...)」と考えると楽でしょう。
例えば、3行目の2列目(A3)を表す場合、Excelでは"R3C2"と記述して下さい。大文字小文字は無視されます。
R1C1 R1C2 R1C3 R1C4 R2C1 R2C2 R2C3 R2C4 R3C1 R3C2 R3C3 R3C4 R4C1 R4C2 R4C3 R4C4 一つのセルを指定したい場合は、「Cell "R3C2"」と記述しますが、複数指定する場合は「Range "R3C2:R4C2"」のように":"をデリミタとしてその範囲を指定します。
2. セル内のデータを取り出す セルのデータは、「get Cell "R1C1"」とすれば取り出せます。Excelで実際に表計算を行っているユーザなら、取り出されたデータに「フォント・サイズ・スタイル」といったテキスト情報の他、「表示形式」や「配置」「罫線」などといった情報が付加されているということが理解できるでしょう。またセルに存在するデータはテキストだけではありません。「式」もまた取り出すことができます。
セルからのデータ中でもっともよく使用されるのは、「value」です。これはセルに書き込まれているデータそのものであり、例えば「食物」と入力されたセルのvalueは文字列「"食物"」となります。数値もまた文字列として取り出されますが、式(例:「=A1+A2」)はその結果の数値を文字列で返します。
「式」はFormulaです。「get Formula of Range "R1C3"」とすれば、「=A1+A2」といった式を「"=A1+A2"」という文字列で得ることができます。
複数のセルのデータを得る場合は、「get Range "R1C1:R2C2"」といった具合にして下さい。この時得られるデータは、「{{ data of R1C1, data of R1C2 }, { data of R2C1, data of R2C2 }}」のようなリストとなります。それぞれのセルの値だけを取り出したい場合は、「value of Range "R1C1:R2C2"」とすればセル内の値だけのリストを得ることができます。
3. 選択範囲を取得する 単に「selection」とすれば、「Cell 3 of Row 2 of document "Worksheet1" of application "Microsoft Excel"」といった形で範囲を取得できます。この範囲のデータを得る場合は、
set selectedRange to selection get value of selectedRangeとすればいいでしょう。(v4.0では、直接「get value of selection」とはできないようです。v5.0ではできるかもしれませんが、未確認です。)
4. セル内のデータを変更する あるセルを指定して、変更したいデータをsetします。
set value of Range "R1C1" to "文字列"
set formula of Range "R1C1" to "=A1+A2"複数のセルを変更したい場合は、次のようにします。
set Range "R1C1:R2C2" to {{"1", "2"}, {"3", "4"}}
5. 新しいドキュメントを作成する 「make new Document」とすることで、新たなドキュメントを作成できます。「make new window」では現在アクティブな書類のウィンドウをもうひとつ作るだけなので、新しい書類は作成できません。
筆者はExcelに関してあまり造詣が深くありませんので、もし「こんないい方法があるよ」という方はぜひ教えて下さい。