É 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:
Tudo o que faremos, será em VBA. No MS Outlook, vá para o VBE (VBA Editor).
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 StringDim olnameSpace As Outlook.NameSpaceDim taskFolder As Outlook.MAPIFolderDim tasks As Outlook.ItemsDim tsk As Outlook.TaskItemDim objExcel As New Excel.ApplicationDim exWb As Excel.WorkbookDim sht As Excel.WorksheetDim strMyName As StringDim x As IntegerDim y As IntegerSet 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.ItemsstrReport = ""'Create HeaderexWb.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.
Então, agora é hora de extrair as suas tarefas e inseri-las na planilha.
Let y = 2For x = 1 To tasks.CountSet tsk = tasks.Item(x)'strReport = strReport + tsk.Subject + "; "'Fill in DataIf Not tsk.Complete ThenLet exWb.Sheets("Ryan").Cells(y, 1) = tsk.SubjectLet exWb.Sheets("Ryan").Cells(y, 2) = tsk.DueDateLet exWb.Sheets("Ryan").Cells(y, 3) = tsk.PercentCompleteLet exWb.Sheets("Ryan").Cells(y, 4) = tsk.StatusLet y = y + 1End IfNext 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.
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.
Agora sim!'Autofit all column widthsFor Each sht In ActiveWorkbook.Worksheetssht.Columns("A").EntireColumn.AutoFitsht.Columns("B").EntireColumn.AutoFitsht.Columns("C").EntireColumn.AutoFitsht.Columns("D").EntireColumn.AutoFitNext shtexWb.SaveexWb.CloseSet exWb = Nothing
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