質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

5098閲覧

vbaでapplescriptを実行したい

resuporu

総合スコア6

AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/02/23 16:18

VBAでAppleScriptを実行したい

<環境>
macOS High Sierra 10.13.3
Excel for Mac 2011

<現状>
Userform内のボタンを押したら指定したセルのハイパーリンクでitunesから音楽を流す.
itunesで音楽が再生されたらitunesが選択(activate?)される.

<したいこと>
ハイパーリンクでitunesに飛んでもexcelがactivateされた状態を維持したい.
→ excelを選択するAppleScriptを,Userfromのボタンをクリックした時に実行したい

発生している問題・エラーメッセージ

コンパイルエラーです.: SubまたはFunctionが定義されていません.

該当のソースコード

VBA

1Private Sub Button_Click() 'ボタンを押した時に実行 2 Dim myScriptResult As String '何か値を代入するわけではないが,一応定義してみた 3 4 Range("C2").Select 'C2セルに 5 Selection.Hyperlinks(1).Follow 'ハイパーリンク先に飛ぶ 6 myScriptResult = AppleScriptTask("select_excel.scpt")'select_excel.scptは実行するAppleScriptの名前 7 8End Sub

試したこと

excelを選択するApplescriptは,

Applescript

1tell application "Microsoft Excel" 2 activate 3end tell

これ単体では問題なく実行されます.上にも書きましたがファイル名はselect_excel.scptです.

補足情報

select_excel.scptは,/Library/Application Scripts/com.microsoft.Excelに置いてます.
本当はAppleScriptTask("applescript名","スクリプトハンドラーの名前","入力パラメーター")
と書くようですが,私の場合,入力パラメータはないので何も書いていません.スクリプトハンドラーが何なのかも良く分かっていません.もしかしたらこのあたりが原因かもしれません.
<参考記事>
https://msdn.microsoft.com/ja-jp/vba/office-mac-vba/applescripttask

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問者様の環境と私の環境が違う為か同じエラーにはならないのですが、既にご推察のように、AppleScript 側にハンドラーを定義してそれを呼び出すかたちになっていないのが原因と思われます。
※当方の環境は、macOS Sierra 10.12.6 + Excel for Mac 15.25(Excel 2016) です。

コンパイルエラーです.:
SubまたはFunctionが定義されていません.

とは、ハンドラー(≒メソッド,関数)が定義していないと報告しているのだと思われます。
VBA側は以下のように直すことでAppleScriptのスクリプトが実行できました。

VBA

1 myScriptResult = AppleScriptTask("select_excel.scpt", "myhandler", "")

AppleScript側。myhandlerハンドラー内で実行したい処理を定義します。

AppleScript

1-- myhandlerハンドラー 2on myhandler() 3 tell application "Microsoft Excel" 4 activate 5 end tell 6end myhandler 7 8-- デフォルトの起動 9on run 10 myhandler() 11end run

runは、単体で実行する為に定義してます。

投稿2018/02/24 07:47

編集2018/02/24 07:48
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

resuporu

2018/02/24 17:06

ありがとうございます.残念ながら私の環境では実行できませんでした.私の環境がExcel for Mac2011と古すぎたのが原因かもしれません.ですのでMacScriptを使えばうまくいくかもしれないと思いました(結局別の方法で解決できました).
dodox86

2018/02/25 05:27 編集

コメントありがとうございます。目的からすると、確かにご提示の別回答の方が良いですね。
guest

0

自己解決

Macのアプリケーション間のフォーカスを制御するにはApplesScriptで書かなければいけばいと決めつけていました.

VBA

1Private Sub Button_Click() 'ボタンを押した時に実行 2 Dim myScriptResult As String '何か値を代入するわけではないが,一応定義してみた 3 4 Range("C2").Select 'C2セルに 5 Selection.Hyperlinks(1).Follow 'ハイパーリンク先に飛ぶ 6 myScriptResult = AppleScriptTask("select_excel.scpt") 7  AppActivate "Microsoft Excel", False 8End Sub

で解決できました.いい勉強になりました.

投稿2018/02/24 17:16

resuporu

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問