На всякий случай код со ссылки, раз она не отобразилась. Вдруг кто-то имеет Мак, сможет вставить и проверить.
Код Выделить
'======================================================================================================================
Public Function GetFileName(dlgTitle As String) As String
Dim result As String
result = ""
#If Mac Then
result = GetFileName_Mac()
#Else
result = GetFileName_Windows(dlgTitle)
#End If
GetFileName = result
End Function
'======================================================================================================================
Public Function GetFileName_Windows(dlgTitle As String) As String
Dim result As String
Dim fd As Office.FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Filters.Add "CSV Files (*.csv)", "*.csv", 1
.Filters.Add "All Files (*.*)", "*.*", 2
.title = dlgTitle
.AllowMultiSelect = False
If .Show = True Then
result = .SelectedItems(1)
End If
End With
GetFileName_Windows = result
End Function
'======================================================================================================================
' Adapted from https://stackoverflow.com/questions/12263016/is-there-a-mac-pc-variant-of-application-getopenfilename
Function GetFileName_Mac() As String
Dim startPath As String
Dim script As String
Dim result As String
Dim MySplit As Variant
Dim N As Long
Dim FName As String
Dim mybook As Workbook
On Error Resume Next
startPath = MacScript("return (path to documents folder) as String")
' Or use startPath = "Macintosh HD:Users:Ron:Desktop:TestFolder:"
' In the following statement, change true to false in the line "multiple
' selections allowed true" if you do not want to be able to select more
' than one file. Additionally, if you want to filter for multiple files, change
' {""com.microsoft.Excel.xls""} to
' {""com.microsoft.excel.xls"",""public.comma-separated-values-text""}
' if you want to filter on xls and csv files, for example.
script = _
"set applescript's text item delimiters to "","" " & vbNewLine & _
"set theFiles to (choose file of type " & _
" {""public.comma-separated-values-text""} " & _
"with prompt ""Please select a file or files"" default location alias """ & _
startPath & """ multiple selections allowed false) as string" & vbNewLine & _
"set applescript's text item delimiters to """" " & vbNewLine & _
"return theFiles"
result = MacScript(script)
result = Replace$(result, "Macintosh HD", "", Count:=1)
result = Replace$(result, ":", "/")
GetFileName_Mac = result
End Function