Загрузите PDF-файл с переменной темой, который находится в гиперссылке, с помощью Outlook VBA - PullRequest
0 голосов
/ 28 января 2020

Я хочу автоматизировать онлайн-заказы, которые я получаю.

Аналогично этому вопросу: Как загрузить PDF-файл с гиперссылкой с помощью VB в Outlook 2016

Электронные письма сортируются по адресу в выделенную папку с использованием правила.

Эти электронные письма имеют гиперссылки на файлы, которые нужно загрузить из Интернета и поместить в каталог на сервере в папке с номером заказа.

Ссылки не записываются в виде URL, они генерируются как номер заказа, за которым следуют -1.pdf, -2.pdf ... и т. Д., В зависимости от количества файлов в заказе.

Например:

Тема: Заказ L12345 компанией

Корпус:
L12345-1.pdf
L12345-2.pdf
L12345-3.pdf ...

Мой код пока:

Sub SavePDFLinkAction(item As Outlook.MailItem)

    Dim subject As String
    Dim linkName As String

    '*******************************
    ' Intitial setup
    '*******************************
    subject = "Order variable order# by company" ' Subject of the email
    linkName = "variable order#-document#.pdf" ' link name in the email body
    '*******************************

    Dim link As String

    link = ParseTextLinePair(item.Body, "HYPERLINK")
    link = Replace(link, linkName, "")
    link = Replace(link, """", "")
    'Download the file - Intitial settings need to be set
    DownloadFile (link)

End Sub


Sub DownloadFile(myURL As String)

    Dim saveDirectoryPath As String

    '*******************************
    ' Intitial setup
    '*******************************
    saveDirectoryPath = "G:\Print\__WEB TO PRINT\Company Name" 'where your files will be stored
    '*******************************

    Dim fileNameArray() As String
    Dim fileName As String
    Dim arrayLength As Integer

    fileNameArray = Split(myURL, "/")
    arrayLength = UBound(fileNameArray)
    fileName = fileNameArray(arrayLength)

    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
    WinHttpReq.Open "GET", myURL, False, "username", "password"
    WinHttpReq.Send

    myURL = WinHttpReq.responseBody
    If WinHttpReq.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write WinHttpReq.responseBody
        oStream.SaveToFile saveDirectoryPath & fileName, 2 ' 1 = no overwrite, 2 = overwrite
        oStream.Close
    End If

End Sub

Function ParseTextLinePair(strSource As String, strLabel As String)
    Dim intLocLabel As Integer
    Dim intLocCRLF As Integer
    Dim intLenLabel As Integer
    Dim strText As String

    intLocLabel = InStr(strSource, strLabel)
    intLenLabel = Len(strLabel)
    If intLocLabel > 0 Then
        intLocCRLF = InStr(intLocLabel, strSource, vbCrLf)
        If intLocCRLF > 0 Then
            intLocLabel = intLocLabel + intLenLabel
            strText = Mid(strSource, _
                            intLocLabel, _
                            intLocCRLF - intLocLabel)
        Else
            intLocLabel = Mid(strSource, intLocLabel + intLenLabel)
        End If
    End If
    ParseTextLinePair = Trim(strText)
End Function

Я не знаю, как передать номер заказа от субъекта, чтобы затем получить ссылки. Это также та же проблема, что и у меня для передачи номера заказа, чтобы создать новую папку с именем номера заказа.

Формат строки темы: Заказ L12345 по названию компании.

Можно ли как-нибудь извлечь номер заказа из темы и использовать его для поиска файлов PDF и создания папки каталога

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...