Excel 2019 for Mac でのファイル選択ダイアログについて

December 2, 2020
excel vba Mac Excel for Mac

Excel 2019 for Mac でのファイル選択ダイアログについて

Excel 2019 for Mac の VBA についてでも軽く触れましたが、自分で VBA を含め多くの言語でプログラムを組む際、ファイル選択ダイアログは案外使う場面が多いのではないでしょうか?

前回の検証の結果かなり制限がかけられている事がわかりました。今回は実際に発生したエラーコードも示しながら少し詳しく説明していきたいと思います。

おさらい

Windows版で使用可能と判明しているコードをそのまま Mac版で走らせた結果、ワイルドカードを使わない Application.GetOpenFilename() のみ正常に動き、他は使用不可でした。

No コード Windows Mac
1 GetOpenFilename() OK OK
2 GetOpenFilename(FileFilter:=“CSV Files (*.csv), *.csv”) OK NG
3 FileDialog(msoFileDialogFolderPicker) OK NG

コードとエラー内容

1.GetOpenFilename()

Sub OpenFilename()

ActiveCell.value = Application.GetOpenFilename()

End Sub

エラーなし


2.GetOpenFilename(FileFilter:=“CSV Files (*.csv), *.csv”)

Sub CsvChooser()

ActiveCell.value = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv), *.csv")

End Sub

実行時エラー’1004’ オブジェクト’GetOpenFilename’メソッド’_Application’が失敗しました。


3.FileDialog(msoFileDialogFolderPicker)

Sub FolderDialog()

With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        If .Show = True Then
            ActiveCell.value = .SelectedItems(1)
        Else
            ActiveCell.value = "False"
       End If
End With

End Sub

実行時エラー’91’ オブジェクト変数またはWithブロック変数が設定されていません。

VBEで確認をしてみるとツールチップがNothingと表示されました。


対策

GetOpenFilenameではワイルドカードを指定せず、ファイルの判定を自前で実装する必要があります。

FileDialog(msoFileDialogFolderPicker)ではApplescriptで実装するしか手はないようです。

FormeCollector2では上記の対策を取ってありますがコードの複雑化は避けれません。フォルダチューザーのAppleScriptはAppleScript インストール支援アプリ FormeVBAassist.app(MIT LICENSE) 内にあります。もしよろしければお使いください。

OSの判定方法はExcel VBA 内での OS 判定方法をご覧ください。

Next Previous

3つの表

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

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

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

テーブルについて

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