2014-12-17 4 views
1

Во-первых, я новичок в VBA, около 20 часов обучения.Перспективы «делать» в Excel с использованием VBA

Я пытаюсь экспортировать элементы из Outlook 2010 в Excel 2010. Я хочу захватить все незавершенные элементы «Делать» из Outlook и бросить их в Excel с одним элементом в строке и столбцами для параметров элемента (например, Subject, Due Date, вложения и т. Д.).

Вот первый проход, который на самом деле делает то, что я объяснил, и импортирует только задачи (задачи являются подмножеством всех, что нужно сделать, от того, что я понимаю) и их Тема/Due Date:

Function GetOutlookApp() As Object 

On Error Resume Next 
    Set GetOutlookApp = GetObject(, "Outlook.Application") 
    If Err.Number <> 0 Then 
    Set GetOutlookApp = CreateObject("Outlook.Application") 
    End If 
On Error GoTo 0 

End Function 

Sub getOlTasks() 

Dim olApp As Object ' Outlook.Application 
Dim olnameSpace As Object ' Outlook.Namespace 
Dim taskFolder As Object ' Outlook.MAPIFolder 
Dim tasks As Object ' Outlook.Items 
Dim tsk As Object 

Set olApp = GetOutlookApp 
Set olnameSpace = olApp.GetNamespace("MAPI") 
Set taskFolder = olnameSpace.GetDefaultFolder(13) 'olFolderTasks is folder# 13, apparently 
Set tasks = taskFolder.Items 

    For x = 1 To tasks.Count 

    Set tsk = tasks.Item(x) 
    Sheet1.Cells(1, 1).Activate 
    Do While IsEmpty(ActiveCell) = False 
     Selection.Offset(1, 0).Activate 
    Loop 

'Fill in Data 
    If Not tsk.Complete Then 
     ActiveCell.Value = tsk.Subject 
     Selection.Offset(0, 1).Activate 
     ActiveCell.Value = tsk.DueDate 
     Selection.Offset(1, -1).Activate 
    End If 

    Next x 

End Sub 

I пытался сделать это только с предметами «задач», все шло гладко, пока я не понял, что задачи не могут иметь вложений. Когда у меня есть письмо с приложением, которое я превращаю в задачу, я теряю вложение. Очевидно, что мне нужно сделать, это импортировать все «To Do items», а не просто задачи.

Так Мои вопросы:

1) Что папка номер olFolderToDo? Я видел, как люди запустить код, как:

Set taskFolder = olnameSpace.GetDefaultFolder(olFolderTasks) 'rather than GetDefaultFolder(13) 

, которая привела бы меня поверить, что я должен быть в состоянии использовать только olFolderToDo, но когда я пытаюсь использовать имя папки в моем первом примере, а не номер, я получаю неверную ошибку времени выполнения аргумента. Если кто-нибудь знает, почему, мне было бы интересно узнать.

2) Как я могу импортировать вложение из электронной почты в конкретную ячейку в excel?

+0

Я не думаю, что есть папка «встроенный» для «ToDo», поэтому он не имеет перечисление как «olFolderTasks». Если вы хотите получить созданную пользователем папку, тогда вы сможете использовать что-то вроде: http://www.slipstick.com/developer/working-vba-nondefault-outlook-folders/ –

+0

Ах, хорошо, спасибо. Я сделаю еще несколько исследований по этому вопросу, что я узнаю. Мой первый вопрос: каким образом я могу синхронизировать все мои «todo items», где бы они ни находились, в одну папку, которую я могу использовать, когда вы упоминаете? – AnthonyJS

+0

Итак, вы правы, нет папки «ToDo», как я надеялся. Возможно, есть флаг для каждого элемента, который я отмечаю в OutLook (как apt) как элемент ToDo. Кажется, мне придется пройти через свой почтовый ящик, отфильтровать сообщения без флага, а затем извлечь. Есть идеи, как это сделать? – AnthonyJS

ответ