Запустите поиск Google из макроса VBA на Mac

Просто я не настоящий программист. Я работаю в области редактирования, и наша компания использует много макросов для оптимизации нашего процесса и функциональности (множество findReplace, определение несовместимых соглашений об орфографии / интервале и т. Д.). При этом я начал рассказывать о том, как редактор VBA работает в Microsoft Word.

У нас есть макрос Fetch (изначально созданный Полом Беверли), который прекрасно работает для всех сотрудников, которые используют ПК. Он берет выделенный термин в документе, автоматически открывает веб-браузер и выполняет поиск в Google. Однако у нас есть несколько сотрудников, которые используют Office для Mac 2011, и они не могут использовать те же функции, что и пользователи ПК. Я бы очень хотел настроить макрос таким образом, чтобы он работал на Mac, но мое отсутствие подготовки серьезно мешает мне.

Вот оригинальный скрипт, который наша компания использует для ПК:

Sub GoogleFetch()
' Version 08.05.12
' Launch selected text on Google

useExplorer = False

runBrowser = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

mySite = "http://www.google.com/#q="

If Len(Selection) = 1 Then Selection.Words(1).Select
mySubject = Trim(Selection)
mySubject = Replace(mySubject, "&", "%26")
mySubject = Replace(mySubject, " ", "+")

If useExplorer = True Then
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.navigate mySite & mySubject
  Set objIE = Nothing
Else
  Shell (runBrowser & " " & mySite & mySubject) 'ERROR HERE
End If
End Sub

(Я, вероятно, исключу функцию useExplorer.)

Я пытался использовать Macscript и OpenURL, чтобы обойти проблему runBrowser (ошибка выскакивает Shell ... линии, потому что я не могу понять правильный путь), но это вызывает больше головной боли.

Есть ли какое-то простое исправление, которое мне не хватает, чтобы обойти это? Заранее благодарю за любую помощь!

1 ответ

Решение

Вы можете по-разному относиться к двум системам (Mac и PC) с помощью #If ... #End If, Обратите внимание # в начале. Это будет выполняться во время компиляции и, в зависимости от системы, оставит только подходящий код для выполнения во время выполнения.

Ты можешь использовать MacScript открыть Safari довольно легко, как я узнал здесь: http://www.officeonemac.com/vba/open_url.html

Итак, ваш код будет выглядеть примерно так:

Sub GoogleFetch()
    ' Version 08.05.12
    ' Launch selected text on Google

    runBrowser = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
    mysite = "http://www.google.com/#q="

    If Len(Selection) = 1 Then Selection.Words(1).Select
    mysubject = Trim(Selection)
    mysubject = Replace(mysubject, "&", "%26")
    mysubject = Replace(mysubject, " ", "+")

    #If Mac Then
        OpenURL mysite & mysubject
    #Else
        Shell runBrowser & " " & mysite & mysubject
    #End If
End Sub

Private Sub OpenURL(ByVal URL As String)
    Dim s As String
    s = "tell application ""Safari""" + vbCrLf + _
        "open location """ + URL + """" + vbCrLf + _
        "end tell"
    MacScript s
End Sub
Другие вопросы по тегам