執筆:EugeneAmnis
Excel for Macの明示的なファイル権限の取得
Excel for MacではVBAで指定したファイルにはじめてアクセスした場合、権限の譲渡ダイアログが表示されます。ただし、セルにパスを記述した場合ではこのダイアログが表示されないときがあります。また画像パスの場合、VBAで記述しても表示されない場合があります。
権限のないファイルにはアクセスできないので、エラーになってしまいます。このエラーも表示されるときとされないときがあります。
その場合は以下のコードを実行して明示的に権限の譲渡ダイアログを表示させることで不具合を未然に防ぐことができます。
Sub requestFilesPermission(ByRef files() As String)
Dim fileAccessGranted As Boolean
Dim filePermissionCandidates
filePermissionCandidates = files()
fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates)
End Sub
このコードは指定されたパスが権限の未譲渡だった場合のみ、ダイアログが表示されるようになっています。間違ったパスを渡してもエラーは発生しません。尚、権限譲渡は一括で行われます。
因みにアクセスファイルの親ファルダを指定しても各ファイルごとにアクセス権の譲渡確認が実行されます。
このコードやAppleScripttaskはWindowsのVBEで長いプロシージャ内に記述すると構文エラーとして認識される場合があります。その場合は別のプロシージャに分けるか以下のようなMac用の条件分岐を使用する必要があります。
#If MAC_OFFICE_VERSION >= 15 Then
Excel2016 for Mac以降の処理
#end if
明示的な権限の取得を実施することで不明だったエラーが解消したこともあります。MacのVBAユーザーは可能な限り使った方が良いでしょう。
リンク
リンク