Запустите поиск 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