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

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



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

December 2, 2020
excel vba Mac Excel for Mac
執筆:EugeneAmnis

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

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