2017-01-13 8 views
0

У меня возникает ошибка кода при отладке. Я ищу, чтобы сохранить элементы, которые я получаю на своем жестком диске, и называть их по-разному. У меня нет проблем.Ошибка кода при попытке переместить .msg обратно в Outlook

Проблема возникает, когда я пытаюсь импортировать их обратно в Outlook. Это дает мне ошибку: Ошибка компиляции Пользовательский тип не определен. на определенной строке.

Вот мой код:

В моем первом модуле

Public Sub saveAttachtoDisk(itm As Outlook.MailItem) 
    Dim objAtt As Outlook.Attachment 
    Dim Savefolder As String 
    Savefolder = "c:\temp" 
    For Each objAtt In itm.Attachments 
    stFileName = Savefolder & "\" & objAtt.DisplayName 
    i = 0 
JumpHere: 
    If Dir(stFileName) = "" Then 
    objAtt.SaveAsFile stFileName 
    Else 
    i = i + 1 
    stFileName = Savefolder & "\" & objAtt.DisplayName & " - " & i 
    GoTo JumpHere 
    End If 
    Set objAtt = Nothing 
    Next 
End Sub 

На втором модуле

Sub ImportMessagesInFolder() 
    Dim fso As Scripting.FileSystemObject 
    Dim SourceFolder As Scripting.Folder 
    Dim SourceFolderName As String 
    Dim FileItem As Scripting.file 
    Dim strFile, strFileType As String 
    Dim oMsg As Object 
    Dim copiedMsg As MailItem 
    Dim Savefolder As Outlook.Folder 

    Set fso = New Scripting.FileSystemObject 
'Source folder 
    SourceFolderName = "C:\temp" 
    Set SourceFolder = fso.GetFolder(SourceFolderName) 

'Set the Outlook folder name 
    Set Savefolder = Session.GetDefaultFolder(olFolderInbox).Folders("Extra") 
    Set Savefolder = Application.ActiveExplorer.CurrentFolder 

    For Each FileItem In SourceFolder.Files 

    Set oMsg = Session.OpenSharedItem(FileItem.Path) 
     On Error Resume Next 

    Set copiedMsg = oMsg.Copy 
     copiedMsg.Move Savefolder 

    Set copiedMsg = Nothing 
    oMsg.Delete 
    Set oMsg = Nothing 

    Next FileItem 

    Set FileItem = Nothing 
    Set SourceFolder = Nothing 
    Set fso = Nothing 
End Sub 

Я также активировал Microsoft Scripting время выполнения Reference. Первый модуль работает отлично и сохраняет вложения с конкретными именами, но второй модуль получает ошибку: Ошибка компиляции определяемого пользователем типа не определен на линии

Dim Savefolder As Outlook.Folder 

Любая помощь приветствуется !!

ответ

0

Вместо этого используйте Outlook.MAPIFolder.

+0

Это исправление моей проблемы, но теперь у меня проблема с строкой: Set oMsg = Session.OpenSharedItem (FileItem.Path) Указывает при запуске макроса: объект времени выполнения438 не поддерживает это свойство или метод –

+0

Какая версия Outlook вы используете? –

+0

Outlook 2003 @Dmitry Streblechenko –