Excel VBA で AppleScript を作成する

December 1, 2020
excel vba Mac Excel for Mac

Excel VBA で AppleScript を作成する

Windows版の Excel では createObject関数を使用する事で OS の機能の多くを利用する事ができますが、Mac版では createObject関数は使用できずにAppleScriptを代用する必要があります。

Excel 2016 for Mac からインライン型の MacScript関数が廃止され、変わりに AppleSriptTask関数を使用する必要があります。 ここでは ApplescriptTask関数の使い方と VBA で AppleScript の存在判定方法と AppleScript の作成方法について書いていきます。

AppleScriptTask関数の使い方

Excel 2016 for Mac の VBA についてにも書いてありますが、まず AppleScript を以下のフォルダに設置します。

~/LibraryApplication Scripts/com.microsoft.Excel/

このフォルダの開き方はここで説明しています。

次に VBA 内で以下のようにコーディングをします。

val = AppleScriptTask("AppleScriptファイル名", "AppleScript名", "引数")

AppleScriptファイル名は拡張子は不要とされていますが、分かりやすくするために付けることを個人的には推奨します。引数は必須ではありません。AppleScript が何も返さない場合は関数に入れる必要はありません。

AppleScript の存在判定方法

AppleScript の存在判定方法は標準で用意されていないので、例外処理を使用します。

Sub appleScriptCheck()
On Error GoTo 256

    Dim buf As String
    buf = AppleScriptTask("FormeGetFiles.applescript", "ls", "")// AppleScript を実行する

Exit Sub
256
        ここに AppleScript が処理を書く
End Sub

毎回、この判定をするのは現実的ではないので WorkBook が開いたタイミングで判定をします。

VBA での AppleScript 作成方法

基本的にはテキストファイルの出力と同じです。以下のコードはNameステートメントと同じ動きするAppleScript を作成します。

Dim appscript1 As String
        appscript1 = "on fm(paths)" & vbNewLine & "set tmp to AppleScript's text item delimiters" _
                & vbNewLine & "set AppleScript's text item delimiters to "",""" _
                & vbNewLine & "set dirItems to every text item of paths" _
                & vbNewLine & "set fpath to (item 1 of dirItems)" _
                & vbNewLine & "set bpath to (item 2 of dirItems)" _
                & vbNewLine & "set AppleScript's text item delimiters to tmp" _
                & vbNewLine & "tell application ""Finder""" _
                & vbNewLine & "move (POSIX file fpath as text) to (POSIX file bpath as text) with replacing" _
                & vbNewLine & "end tell" & vbNewLine & "end fm"
Dim path2 As String
path2 = 任意のパス & "FormeFileMove.applescript"

Open path2 For Output As #3
    Print #3, appscript1
Close #3

インラインで書いている為大変見づらいですが、作成された AppleScript を指定フォルダに設置して完了です。

可能であれば保存場所を直接指定できればいいのですが、AppleScript では難しいようです。ただ、これにより Excelファイル一つで配布できるようになりました。

Next Previous

3つの表

October 12, 2023
excel データ入力 操作

Excelで量産シミュレーション

October 12, 2023
excel データ入力 操作

テーブルについて

October 12, 2023
excel データ入力 操作