Добрый день! Подскажите, пожалуйста, как оформлять гиперссылки на внешние приложения с параметрами запуска, а точнее гиперссылку на письмо электронной почты в программе Microsoft Outlook. В результате работы
[vba]
Код
Sub new1() Dim objMail As Outlook.MailItem Dim doClipboard As New DataObject
'One and ONLY one message must be selected If Application.ActiveExplorer.Selection.Count <> 1 Then MsgBox ("One and ONLY one message must be selected.") Exit Sub End If
Set objMail = Application.ActiveExplorer.Selection.Item(1) doClipboard.SetText """C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe"" outlook:" + objMail.EntryID doClipboard.PutInClipboard End Sub
[/vba]
я получаю ссылку типа "C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe" outlook:000000002A3DD05CE183894A9C5DE0DA789E6CF707008B5039B834A2F9479CC10647520B190000000059A61B0000EC885BF319494C4888A389D083240C9600007569A8E50000 , которая отлично работает в командной строке. Однако, при вставке в Excel мне сообщают: "Неверный адрес сайта. Проверьте его и повторите попытку"; притом чистая ссылка "C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe" спокойно открывается.
Добрый день! Подскажите, пожалуйста, как оформлять гиперссылки на внешние приложения с параметрами запуска, а точнее гиперссылку на письмо электронной почты в программе Microsoft Outlook. В результате работы
[vba]
Код
Sub new1() Dim objMail As Outlook.MailItem Dim doClipboard As New DataObject
'One and ONLY one message must be selected If Application.ActiveExplorer.Selection.Count <> 1 Then MsgBox ("One and ONLY one message must be selected.") Exit Sub End If
Set objMail = Application.ActiveExplorer.Selection.Item(1) doClipboard.SetText """C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe"" outlook:" + objMail.EntryID doClipboard.PutInClipboard End Sub
[/vba]
я получаю ссылку типа "C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe" outlook:000000002A3DD05CE183894A9C5DE0DA789E6CF707008B5039B834A2F9479CC10647520B190000000059A61B0000EC885BF319494C4888A389D083240C9600007569A8E50000 , которая отлично работает в командной строке. Однако, при вставке в Excel мне сообщают: "Неверный адрес сайта. Проверьте его и повторите попытку"; притом чистая ссылка "C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe" спокойно открывается.Glebzilla
Сообщение отредактировал Glebzilla - Понедельник, 13.04.2020, 17:34
Ок, частично решено. Я создал бат-файл с нужной ссылкой внутри. А в экселе гиперссылка на батник. Подскажите, пожалуйста, как изменить макрос так, чтобы батник создавался автоматически и имел в названии Дата.Отправитель.bat ?
Ок, частично решено. Я создал бат-файл с нужной ссылкой внутри. А в экселе гиперссылка на батник. Подскажите, пожалуйста, как изменить макрос так, чтобы батник создавался автоматически и имел в названии Дата.Отправитель.bat ?Glebzilla
Вот работающий код Макрос сделал внутри Microsoft Outlook Внутри VBA надо зайти в Tools -> References -> Browse , в папке Windows/System32 найти FM20.DLL При выполнении макроса в заданной папке автоматически создаётся *.bat , ссылка на который копируется в буфер обмена, затем эту ссылку мы вставляем в Эксель для ведения собственной статистики. Сохранение только ссылки на письмо позволяет нам условно сэкономить место на жёстком диске. При отправке полученной ссылки другому пользователю она становится бесполезна, потому как привязана к конкретному почтовому ящику в конкретной почтовой программе на конкретном компьютере. [vba]
Код
Sub new1() Dim objMail As Outlook.MailItem Dim doClipboard As New DataObject
'One and ONLY one message muse be selected If Application.ActiveExplorer.Selection.Count <> 1 Then MsgBox ("One and ONLY one message must be selected.") Exit Sub End If
Set objMail = Application.ActiveExplorer.Selection.Item(1)
Tme = objMail.ReceivedTime timeLength = Len(Tme)
If timeLength = 21 Then MsgTime = Replace(Right(objMail.ReceivedTime, 18), ":", ".") Else MsgTime = Replace(Right(objMail.ReceivedTime, 19), ":", ".")
Open "C:\Users\SuperUser\Documents\" & TxtName & ".bat" For Output As #1 Print #1, """C:\Program Files (x86)\Microsoft Office\Office16\Outlook.exe"" outlook:" + objMail.EntryID Close #1 doClipboard.SetText "=ГИПЕРССЫЛКА(""C:\Users\SuperUser\Documents\" + TxtName + ".bat"")" doClipboard.PutInClipboard
End Sub
[/vba] Потом в Эксель просто нажимаем вставить, ссылка готова.
Вот работающий код Макрос сделал внутри Microsoft Outlook Внутри VBA надо зайти в Tools -> References -> Browse , в папке Windows/System32 найти FM20.DLL При выполнении макроса в заданной папке автоматически создаётся *.bat , ссылка на который копируется в буфер обмена, затем эту ссылку мы вставляем в Эксель для ведения собственной статистики. Сохранение только ссылки на письмо позволяет нам условно сэкономить место на жёстком диске. При отправке полученной ссылки другому пользователю она становится бесполезна, потому как привязана к конкретному почтовому ящику в конкретной почтовой программе на конкретном компьютере. [vba]
Код
Sub new1() Dim objMail As Outlook.MailItem Dim doClipboard As New DataObject
'One and ONLY one message muse be selected If Application.ActiveExplorer.Selection.Count <> 1 Then MsgBox ("One and ONLY one message must be selected.") Exit Sub End If
Set objMail = Application.ActiveExplorer.Selection.Item(1)
Tme = objMail.ReceivedTime timeLength = Len(Tme)
If timeLength = 21 Then MsgTime = Replace(Right(objMail.ReceivedTime, 18), ":", ".") Else MsgTime = Replace(Right(objMail.ReceivedTime, 19), ":", ".")
Для сохранения непосредственно сообщения в формате .msg Имя файла я задаю из Имени отправителя + Дата + Время, потому что темы сообщений слишком длинные, и когда в названии файлов возникает тема, windows не может их обработать, да и поиск так удобнее. Моё получение даты из свойств письма довольно кривое, можете исправлять. Письма сохраняются в сетевую папку , доступ к которой ограничен доменными политиками, то есть у нас только пользователи, состоящие в определенной группе, могут с ними работать. Доступные свойства, кроме даты и имени отправителя, ищите в справке Майкрософта по MailItem . [vba]
Код
Sub new1() Dim objMail As Outlook.MailItem Dim doClipboard As New DataObject
'One and ONLY one message muse be selected If Application.ActiveExplorer.Selection.Count <> 1 Then MsgBox ("Выберите только одно сообщение.") Exit Sub End If
Set objMail = Application.ActiveExplorer.Selection.Item(1)
Tme = objMail.ReceivedTime timeLength = Len(Tme)
If timeLength = 21 Then MsgTime = Replace(Right(objMail.ReceivedTime, 18), ":", ".") Else MsgTime = Replace(Right(objMail.ReceivedTime, 19), ":", ".")
Для сохранения непосредственно сообщения в формате .msg Имя файла я задаю из Имени отправителя + Дата + Время, потому что темы сообщений слишком длинные, и когда в названии файлов возникает тема, windows не может их обработать, да и поиск так удобнее. Моё получение даты из свойств письма довольно кривое, можете исправлять. Письма сохраняются в сетевую папку , доступ к которой ограничен доменными политиками, то есть у нас только пользователи, состоящие в определенной группе, могут с ними работать. Доступные свойства, кроме даты и имени отправителя, ищите в справке Майкрософта по MailItem . [vba]
Код
Sub new1() Dim objMail As Outlook.MailItem Dim doClipboard As New DataObject
'One and ONLY one message muse be selected If Application.ActiveExplorer.Selection.Count <> 1 Then MsgBox ("Выберите только одно сообщение.") Exit Sub End If
Set objMail = Application.ActiveExplorer.Selection.Item(1)
Tme = objMail.ReceivedTime timeLength = Len(Tme)
If timeLength = 21 Then MsgTime = Replace(Right(objMail.ReceivedTime, 18), ":", ".") Else MsgTime = Replace(Right(objMail.ReceivedTime, 19), ":", ".")