Excel VBA で AppleScript を作成する

December 1, 2020
excel vba 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

Excel 2019 for Mac VBA での画像の扱い

December 4, 2020
excel vba Mac

Excel 2019 for Mac でのユーザーフォーム

December 4, 2020
excel フォーム データ入力 vba Mac

Excel 2019 for Mac VBE での日本語入力

December 4, 2020
excel vba Mac