Открыть URL на Windows и 64-битном Mac - PullRequest
0 голосов
/ 23 февраля 2019

Следующий код открывает URL-адрес на компьютерах с Windows (Excel 2016, 2013, 2010).

Я пытаюсь сделать его пригодным для использования на 64-разрядном Mac (Excel для Mac v. 16.22, Office365 установить).

Я пробовал несколько итераций, чтобы найти библиотеку Mac "libc.dylib", и обычно получаю "Ошибка выполнения '53'. Файл не найден" libc.dylib ""ошибка.Как только я получил ошибку «Ошибка выполнения 453». Файл не найден »/usr/lib/libc.dylib'".

Вот код, выдавший ошибку 453:

Option Explicit

Enum W32_Window_State
    Show_Normal = 1
    Show_Minimized = 2
    Show_Maximized = 3
    Show_Min_No_Active = 7
    Show_Default = 10
End Enum

#If Mac Then
    #If VBA7 Then
        Private Declare PtrSafe Function system Lib "/usr/lib/libc.dylib" (ByVal command As String) As LongPtr
    #Else
        Private Declare Function system Lib "/usr/lib/libc.dylib" (ByVal command As String) As Long
    #End If
#Else
    #If VBA7 Then
        Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
            Alias "ShellExecuteA" (ByVal hwnd As LongPtr, _
            ByVal lpOperation As String, ByVal lpFile As String, _
            ByVal lpParameters As String, ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As LongPtr
    #Else
        Private Declare Function ShellExecute Lib "shell32.dll" _
            Alias "ShellExecuteA" (ByVal hwnd As Long, _
            ByVal lpOperation As String, ByVal lpFile As String, _
            ByVal lpParameters As String, ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As Long
    #End If
#End If

Public Function OpenURL(URL As String, WindowState As W32_Window_State) As Boolean

    'Opens passed URL with default application, or Error Code (<32) upon error

    #If VBA7 Then
        Dim lngHWnd As LongPtr
        Dim lngReturn As LongPtr
    #Else
        Dim lngHWnd As Long
        Dim lngReturn As Long
    #End If

    #If Mac Then
        lngReturn = system("open -a Safari --args " & URL)
    #Else
        lngReturn = ShellExecute(lngHWnd, "open", URL, vbNullString, _
            vbNullString, WindowState)
    #End If

    OpenURL = (lngReturn > 32)  ' With Mac, this may return a dummy variable, but we're going to do it anyways.

End Function

В дополнение к приведенному здесь коду, я попытался использовать двоеточие в пути к файлу вместо косой черты.Это также дало мне ошибку '53, файл не найден '.

...