2017-07-25 1 views
-1

Ich bin ratlos, um an einem Skript zu arbeiten, um einen E-Mail-Ordner (& Inhalt) in einen anderen übergeordneten Ordner zu verschieben. Dieser Ordner befindet sich nicht im übergeordneten Posteingang. Ich habe ein grundlegendes, autodidaktisches Verständnis von VBA.
z. ThisOutlookSession/[FolderA] zum Verschieben nach ThisOutlookSession/Inbox/[FolderA]
Ich habe viele Beispiele gefunden, um E-Mails, aber keine Ordner zu verschieben.VBA zum Verschieben von E-Mail-Ordnern und Inhalten

Vielen Dank im Voraus für jede Hilfe.

Edit:

Private Sub ImportFolder() <br> 
''''''''' 
'' Assume for this example so im not overloading code that I have already created the CSV that im drawing data from, opened in excel & this Macro is running from Outlook 
''''''''' 

Dim xlWkb As Object ' As Workbook 
Dim xlSht As Object ' As Worksheet 
Set xlSht = xlWkb.Worksheets(1) 'set active being first worksheet 
Dim iRow As Integer 
Dim ChilCol As Integer 
Dim parentFolderName 
iRow = 1 'set start a Row1 
ChilCol = 1 'set start as ColA 

'Set Parent as Static nomination in head macros 

While xlSht.Cells(iRow, 1) <> "" 'while Parent is not blank 

If ChilCol <= 1 Then 
Set objParentFolder = Session.GetDefaultFolder(olFolderInbox) 
    Else 
parentFolderName = xlSht.Cells(iRow, ChilCol - 1) 'set the parent to be the previous Column 

Set objParentFolder = objParentFolder.Folders(parentFolderName) 
End If 

'Set name for the new folder 
    newFolderName = xlSht.Cells(iRow, ChilCol) 

On Error Resume Next 

'''''''''''''''''''''''''''''''''''''' 
Dim objNewFolder As Outlook.Folder 

''''''''''''''''''''''''''''''''''''''' 
If newFolderName = "Inbox" Then 
newFolderName = Nothing 
End If 

'If ParentFolder = newFolderName 
    ' 

Set objNewFolder = objParentFolder.Folders(newFolderName) 

'' This is where I am unsure - I have a Archive email folder on same hierarchy as Inbox 
'' due to how mobile Outlook displays folders. This part of the code should check that if 
'' the Parent Folder for the new folder to be mapped in then move the Folder in Archive to Inbox\SubFolder 

     If objNewFolder.Parent = "zArchive" And objNewFolder.Parent = parentFolderName Then 
      objNewFolder.MoveTo Session.GetDefaultFolder(olFolderInbox) 
     End If 

'If no issues, then create the Folder 
If objNewFolder Is Nothing Then 'if no value 
    Set objNewFolder = objParentFolder.Folders.Add(newFolderName) 'add folder 
End If  

' make new folder the parent 
Set objParentFolder = objNewFolder 
    If xlSht.Cells(iRow, ChilCol) = "" Then ''unless blank 
     iRow = iRow + 1 'new row 
     ChilCol = 0 'reset ChildColumn 
    End If 
    ChilCol = ChilCol + 1 ' move to next nesting column 
    Set objNewFolder = Nothing 'required to reset the New Folder name 
Wend 

xlWkb.Close 
xlApp.Quit 
Set xlWkb = Nothing 
Set xlApp = Nothing 
Set objParentFolder = Nothing 
End Sub 
+0

Willkommen bei SO! Hier ist ein Beitrag, der Ihnen beim Schreiben von guten Fragen helfen wird; Diejenigen, die nicht geschlossen werden und möglicherweise sogar beantwortet werden: https://stackoverflow.com/help/how-to-ask –

Antwort

0

können Sie die Folder.MoveTo Methode verwenden, die einen Ordner in den angegebenen Zielordner bewegt.

Sub MoveFolder() 
    Dim myNameSpace As Outlook.NameSpace 
    Dim myFolder As Outlook.Folder 
    Dim myNewFolder As Outlook.Folder 

    Set myNameSpace = Application.GetNamespace("MAPI") 
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderContacts) 
    Set myNewFolder = myFolder.Folders.Add("My Test Contacts") 
    myNewFolder.MoveTo myNameSpace.GetDefaultFolder(olFolderInbox) 
End Sub 

Sie können die Getting Started with VBA in Outlook 2010 Artikel hilfreich finden.

+0

Vielen Dank. Ich werde es versuchen. Ich nehme an, dass der Schlüssel in diesem Beispiel myNewFolder.MoveTo myNameSpace.GetDeafultFolder (olFolderInbox) ist. Ich frage mich nur, warum Sie olFolderContacts enthalten haben? .. also wenn ich den myNewFolder bereits gesetzt habe (lesen von einem csv) dann sollte mein addierter Code oben funktionieren? –

Verwandte Themen