#vba #google-chrome #outlook
#vba #google-chrome #outlook
Вопрос:
Я открываю все гиперссылки в электронном письме Outlook с помощью ShellExecute
.
Я хочу сохранить все открытые веб-страницы (мой браузер по умолчанию — Chrome).
Я пробовал SendKeys
. Я подозреваю, что мне нужно поместить некоторые коды после ShellExecute
и до SendKeys
, чтобы он распознал открытые веб-страницы как «активные». Другими словами, я хотел бы установить фокус клавиатуры на веб-странице Chrome, которая была открыта.
Private Declare PtrSafe Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hWnd As Long, _
ByVal Operation As String, _
ByVal Filename As String, _
Optional ByVal Parameters As String, _
Optional ByVal Directory As String, _
Optional ByVal WindowStyle As Long = vbMinimizedFocus _
) As Long
Sub OpenLinksMessage()
Dim olMail As Outlook.MailItem
Dim Reg1 As RegExp
Dim M1 As MatchCollection
Dim M As Match
Dim strURL As String
Dim lSuccess As Long
Set olMail = Application.ActiveExplorer().Selection(1)
Set Reg1 = New RegExp
With Reg1
.Pattern = "(https?[:]//([0-9a-z=?:/.amp;-^!#$%;_])*)"
.Global = True
.IgnoreCase = True
End With
If Reg1.Test(olMail.Body) Then
Set M1 = Reg1.Execute(olMail.Body)
For Each M In M1
strURL = M.SubMatches(0)
Debug.Print strURL
If InStr(strURL, "unsubscribe") Then GoTo NextURL
If Right(strURL, 1) = ">" Then strURL = Left(strURL, Len(strURL) - 1)
lSuccess = ShellExecute(0, "Open", strURL)
DoEvents
'This is where I think I need codes
SendKeys ("^S"), True
SendKeys ("name"), True
SendKeys "{Enter}", True
NextURL:
Next
End If
Set Reg1 = Nothing
End Sub
После выяснения этого я настрою коды, чтобы сделать это в цикле, чтобы открыть и сохранить более 100 ссылок.
Комментарии:
1. У меня есть этот код с использованием объекта IE, но я думаю, что это не то, что вы хотите, верно? И что именно вы хотите сохранить с помощью CTRL S? Мы можем сделать лучше, чем отправлять ключи для вас, если вы укажете цель…
2. Спасибо за ваш ответ. К сожалению, я не могу использовать Internet Explorer (IE) — гиперссылка, которую я пытался открыть, поддерживается только Chrome. Чтобы уточнить, что мне действительно нужно, это установить фокус клавиатуры на веб-странице Chrome, которую я открыл.
Ответ №1:
Я прокомментировал, что мы можем использовать IE object и улучшить способы автоматизации этого процесса
но, отвечая на ваш вопрос, вы можете попробовать
Dim i As Integer
SendKeys ("^S"), True
On Error Resume Next
For i = 1 To 100
VBA.AppActivate ("Save As")
Next i
On Error GoTo 0
SendKeys ("name"), True
SendKeys "{Enter}", True
Комментарии:
1. Я добавил ваш код и получил «Ожидаемая ошибка компиляции: выражение»