このブログは広告及びアフェリエイトプログラムを使用しています。

プライバシーポリシーと免責事項



Macでもファイルタイプと複数選択ができるファイルチューザー

May 7, 2025
excel vba Mac Excel for Mac
執筆:EugeneAmnis

GetOpenFilename

ExcelVBAにはGetOpenFilenameというユーザーに任意のファイルを選択させることのできるAPIがあります。このAPIを使うことでExcel上で任意のファイル処理をスムーズに行うことができる訳です。ファイルタイプと複数選択にも対応することでユーザーの作業負担軽減に貢献しています。Windows版では。

Mac版では使用可能ではありますが、ファイルタイプの指定も複数選択にも対応していません。因みにファイルタイプの指定ではエラーが発生し、複数選択は指定しても操作できない状態になっています。(Shift or Ctrl or command)

AppleScriptで代替機能を作成

現在、様々なプラットフォームで使用されるExcelにおいて互換性がないのは困りますね。特にVBAで簡易ツールを作成されている方たちにとっては頭の痛い問題になりかねません。そこでいつもの流れですがAppleScriptを利用して、Windows、Mac両OSで使用できるユニバーサルVBAに変えていきましょう。

実装

具体的な実装に入ります。まずAppleScriptでGetOpenFilenameと同じ動きをするものをコーディングします。入力するコードは以下になります。

AppleScript(applescriptファイル)
on msf(typ)
	tell application "Finder"
		activate
		try
			set fs to choose file with prompt "MultipleSelectFiles" of type typ with multiple selections allowed without invisibles
			return fs as text
		on error number err_num
			false
		end try
	end tell
end msf

次にコーディングしたものを任意の名前(英名.applescriptを推奨)で~/LibraryApplication Scripts/com.microsoft.Excel/に保存すると、AppleScriptTask関数で利用できます。

VBA

GetOpenFilename代替コードは以下です。

Option Explicit

Sub MultipleFileChoose()
Dim datas As Variant, res As String

If Not Application.OperatingSystem Like "*Mac*" Then //Windows版
    datas = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv), *.csv", MultiSelect:=True)
Else
    #If MAC_OFFICE_VERSION >= 15 Then //Mac版(2016以上)
        datas = AppleScriptTask("MultipleSelectFiles.applescript", "msf", "csv") //成功でも配列ではなく文字列で返ってくる。
        res = Replace(datas, ".csv", ".csv,") //AppleScriptでは区切り文字設定が厄介なため選択したファイルパスがすべて連結した状態で返ってくるようにしてあるので拡張子をコンマ付きに変更する。
        datas = Split(res) //配列に戻す。
    #End If
End If

If IsArray(datas) Then //配列であれば表示する。
    res = Join(datas)
    MsgBox (Replace(res, ",", vbCrLf))
End If

End Sub

今回はSubで定義していますが、Functionで定義してコーディングした方が汎用性が高くなります。

実行結果

Windows版

Mac版

これで両OSで使用できるようになりました。

この状態では配布の際に2つのファイル(applescriptとxlsm)とMac版では特別な操作が必要になります。Excelワンパッケージ化に興味のある方はこの記事を参考にしてください。

Previous

MailForm

excel vba Mac Excel for Mac

Home

Excel開発にリファレンスは必要か?

October 26, 2024
excel Excel for Mac データ入力 操作 QC KAIZEN

Mac版VBAでファイルを開く際のWindows版との違いについてGeminiに聞いてみた

October 14, 2024
AI excel Excel for Mac Mac

GeminiにExcel for Macについて聞いてみた(AppleScriptTask編)

October 9, 2024
AI excel Excel for Mac Mac