Страницы: 1
RSS
Отправка гипперссылки как вложенный файл в outlook, Небходимо отправить ссылку из excel как вложение на почту.
 
Добрый день!
Есть таблица с гипперсылкой. Нужно отправить эту гипперсылку из EXCEL через outlook так, чтобы файл из гипперсылки стал вложением. Подскажите, пожалуйста, такая возможность есть?
 
нет, эксель такое не умеет )
 
Скрещиваете ужа, и ежа, и радуетесь результату.
 
Цитата
написал:
Скрещиваете
ну да, в общем.
Цитата
написал:
чтобы файл из гипперсылки стал вложением
по сути не самая такая интересная задача.
Гиперссылка ведет на локальный путь к файлу, а такие ссылки слегка муторно могут определяться в разных версиях Excel. Но общий принцип именно такой, как в статье. Берете функцию из этой статьи: Как получить адрес гиперссылки из ячейки
И используете следующим образом:
Код
Sub SendFile()
    Dim sFilePath$
    sFilePath = Get_Hyperlink_Address(Range("A4")) '
    If Len(sFilePath) Then
        If Dir(sFilePath) = "" Then
            If Right(sFilePath, 1) <> "\" Then
                sFilePath = sFilePath & "\"
            End If
            sFilePath = ThisWorkbook.Path & sFilePath
            If Dir(sFilePath) = "" Then
                MsgBox "Не удалось определить файл", vbCritical
                Exit Sub
            End If
        End If
        'теперь можно создать письмо и вложить как вложение файл sFilePath
        'oMsg.Attachments.Add sFilePath
    End If
End Sub
Function Get_Hyperlink_Address(ByVal rCell As Range) As String
    Dim s As String
    If rCell.Hyperlinks.Count = 0 Then
        s = rCell.Formula
        If Mid$(s, 2, 9) = "HYPERLINK" Then
            'такой подход сработает только в случае, если в ячейке записана ссылка текстом
            'но не сработает, если гиперссылка создана из ссылок на ячейки
            '   Get_Hyperlink_Address = Mid$(s, 13, InStr(13, s, Chr(34)) - 13)
            'поэтому используем более сложный, но универсальный вариант
            If s Like "=HYPERLINK*" Then
                'получаем данные первого аргумента и убираем знак =
                s = Split(s, ",")(0)
                s = Mid$(s, 2, Len(s) - 1)
                'на всякий случай добавляем скобку в конец формулы
                'хоть Evaluate должен сработать и без неё
                If Right$(s, 1) <> ")" Then
                    s = s & ")"
                End If
                Get_Hyperlink_Address = Evaluate(s)
            End If
        Else
            Get_Hyperlink_Address = ""
        End If
    Else
        s = rCell.Hyperlinks(1).SubAddress
        If s <> "" Then s = "#" & rCell.Hyperlinks(1).SubAddress
        Get_Hyperlink_Address = rCell.Hyperlinks(rCell.Hyperlinks.Count).Address & s
    End If
End Function
останется вместо строки oMsg.Attachments.Add sFilePath сделать отправку письма(включив эту строку для вставки вложения). Тем таких много, поищите поиском и попробуйте адаптировать.
Как пример: Как отправить письмо из Excel?
Изменено: Дмитрий(The_Prist) Щербаков - 13.01.2022 13:11:56
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх