Вызовите функцию в другой подпрограмме в VBA для Outlook - PullRequest
0 голосов
/ 09 октября 2019

У меня есть сценарий VBA для Outlook. Я пишу, чтобы загрузить вложения и отсортировать их в свои папки. Я пытаюсь вызвать функцию для расчета имени папки, в которую она должна войти, на основе имени домена, но когда я ввел эту функцию, правило не работает. Я смог загрузить файлы в одну папку, когда функции там не было.

Я пробовал примеры по изменению функции, а также пробовал ее как сабвуфер, но не смог заставить их работать.

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim EmailAddress As String
Dim FullDomainName As String
Dim DomainName As String
Dim CalculatedFolderName As String

EmailAddress = itm.SenderEmailAddress
DomainName = ""
CalculatedFolderName = ""
If (InStr(EmailAddress, "@") > 0) Then
FullDomainName = Right(EmailAddress, Len(EmailAddress) - InStr(EmailAddress, "@"))
DomainName = Left(FullDomainName, InStr(FullDomainName, ".") - 1)
End If

MsgBox DomainName

CalculatedFolderName = FolderName(DomainName)

saveFolder = "c:\attachment\test\"
     For Each objAtt In itm.Attachments
          objAtt.SaveAsFile saveFolder & "\" & DomainName & " " & objAtt.DisplayName
          Set objAtt = Nothing
     Next

End Sub

Function FolderName(DomainName As String) As String
    MsgBox DomainName
    FolderName = ""
    If (DomainName = "abc") Then FolderName = "A"
    ElseIf (DomainName = "xyz") Then FolderName = "B"
    Else
        FolderName = DomainName
    End If
    Exit Function
End Function

Я ожидал, что имя папки вернется при вызове функции.

1 Ответ

0 голосов
/ 09 октября 2019

Исправление было сделано путем перемещения следующего оператора на следующую строку.

If (DomainName = "abc") Then 
     FolderName = "A"
ElseIf (DomainName = "xyz") Then 
     FolderName = "B"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...