Views

Histats

Vitrine

VBA Outlook - Como exportar as tarefas do MS Outlook para o MS Excel - How To Export Your Outlook Tasks To Excel With VBA

 31778_FinalRail_header1.jpg

É difícil não reconhecer o quanto devemos a Microsoft, em especial, nós desenvolvedores  temos muito a agradecer quanto a facilidade de integração encontrada na suíte MS Office.

Quando pensamos no poder que vem das ações que podem ser iniciadas através de e-mails, realmente ficamos surpreendidos, talvez ainda não tenha pensando, e portanto ainda não utilizou as seguintes necessárias funcionalidades nas suas aplicações:

Ao receber um e-Mail gerar automaticamente novas tarefas.

Ao receber um e-Mail gerar automaticamente novos compromissos no calendário.

Ao enviarmos um e-Mail, concluirmos automaticamente uma tarefa.

Que tal enviar um e-mail para o seu chefe com um relatório de status atualizado onde estão as suas tarefas pendentes ou as do seu departamento? Se fizer isso direito, poderá cortar imensamente a sua carga de trabalho do dia com 'uma só cajadada'. Como ? Por simplesmente automatizar as coisas de um modo inteligente e eficiente.

Exportando as tarefas do MS Outlook para o MS Excel:
Há uma série de razões que podem levar você a querer fazer isso. Talvez deseje acompanhar suas tarefas inacabadas diariamente em um formato que possa rapidamente enviar para alguém, e isso não é tão fácil de se fazer somente as tarefas do MS Outlook.

Seja qual for o caso, a capacidade de capturar a saída de informações das tarefas incompletas do MS Outlook será uma coisa útil, como poderá perceber.

Neste exemplo observamos uma amostra da lista de tarefas do MS Outlook com 5 tarefas pendete:

outlook2b.png?323f2c
 
Tudo o que faremos, será em VBA. No MS Outlook, vá para o VBE (VBA Editor).

outlook1.png?323f2c

O código que usaremos para capturar a lista de tarefas e exportá-la para o MS Excel não é realmente tão complicado. 

O primeiro passo é ligar os dois objetos, MS Outlook e MS Excel, criando as necessárias definições de variáveis. 

Usando o objeto de pasta de trabalho que criou, comecer por criar o cabeçalho na planilha.

  Dim strReport As String
  Dim olnameSpace As Outlook.NameSpace
  Dim taskFolder As Outlook.MAPIFolder
  Dim tasks As Outlook.Items
  Dim tsk As Outlook.TaskItem
  Dim objExcel As New Excel.Application
  Dim exWb As Excel.Workbook
  Dim sht As Excel.Worksheet
 
  Dim strMyName As String
  Dim x As Integer
  Dim y As Integer
 
  Set exWb = objExcel.Workbooks.Open(" C:\bernardess\Tasks\MyATasks.xls")
 
'  exWb.Sheets(strMyName).Delete
'  exWb.Sheets.Add (strMyName)

  Set olnameSpace = Application.GetNamespace("MAPI")
  Set taskFolder = olnameSpace.GetDefaultFolder(olFolderTasks)
 
  Set tasks = taskFolder.Items
 
  strReport = ""
 
  'Create Header
  exWb.Sheets("Sheet1").Cells(1, 1) = "Subject"
  exWb.Sheets("Sheet1").Cells(1, 2) = "Due Date"
  exWb.Sheets("Sheet1").Cells(1, 3) = "Percent Complete"
  exWb.Sheets("Sheet1").Cells(1, 4) = "Status"

Então, aqui está o que a nova planilha parece. Seu aplicativo MS Outlook acaba de criar um novo arquivo MS Excel chamado de 'MyATasks.xls' no diretório C:\bernardess\Tasks\, e criou um cabeçalho para as tarefas que você está prestes a inserir.

outlook3.png?323f2c

Então, agora é hora de extrair as suas tarefas e inseri-las na planilha. 

Let y = 2
 
  For x = 1 To tasks.Count
 
       Set tsk = tasks.Item(x)
 
       'strReport = strReport + tsk.Subject + "; "

       'Fill in Data
       If Not tsk.Complete Then
 
        Let exWb.Sheets("Ryan").Cells(y, 1) = tsk.Subject
        Let exWb.Sheets("Ryan").Cells(y, 2) = tsk.DueDate
        Let exWb.Sheets("Ryan").Cells(y, 3) = tsk.PercentComplete
        Let exWb.Sheets("Ryan").Cells(y, 4) = tsk.Status
        Let y = y + 1
 
       End If
 
  Next x

O que este algoritmo faz é pesquisar a lista completa de itens das tarefas no MS Outlook, verificar se o item está concluído, e se não for o caso, acrescentá-lo as 4 células da planilha. 

Se desejar, pode inserir ainda mais informações, basta explorar que informações da tarefa estão disponíveis, digitando 'tsk.' e, em seguida, navegar pela lista de propriedades que surgem.

outlook41.png?323f2c

Sendo um pouco perfeccionista, ainda há um problema. Observe como a coluna A está.  Não gosto disso, então vamos adicionar um pouco mais de código para ajustar automaticamente todas as colunas na planilha.

'Autofit all column widths

For Each sht In ActiveWorkbook.Worksheets
    sht.Columns("A").EntireColumn.AutoFit
    sht.Columns("B").EntireColumn.AutoFit
    sht.Columns("C").EntireColumn.AutoFit
    sht.Columns("D").EntireColumn.AutoFit
Next sht
 
exWb.Save
exWb.Close
 
Set exWb = Nothing

Agora sim!

outlook5.png?323f2c

Onde é que coloco o código para ser executado
Bem, configuro-o para executar no evento Application.Close(), quando sai do MS Outlook, no final do dia. 

Isto fará com que, no final do dia, tenha um relatório no MS Excel, de todas as suas  tarefas que ficaram pendentes no dia.

Pode, e deve, pensar em quaisquer outros usos interessantes para esta técnica. Talvez automatize disparar um e-mail com a lista de tarefas, ou deseje reproduzí-los em um arquivo HTML e 'FTPingá-lo' para seu servidor web.

Com um pouco de criatividade, é impressionante o que pode criar com um pouco de automação. 

Compartilhe seus próprios pensamentos e idéias na seção de comentários abaixo!


Tags: MS Excel, MS Outlook, udf, tarefas, tasks, worksheet, planilha, automation, automação


André Luiz Bernardes

A&A® - Work smart, not hard.



  
   
  

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...