Så här exporterar du dina Outlook-uppgifter till Excel med VBA

Så här exporterar du dina Outlook-uppgifter till Excel med VBA / Windows

Oavsett om du är en fan av Microsoft, är det en bra sak som kan sägas om MS Office-produkter, åtminstone hur enkelt det är att integrera var och en av dem med varandra.

Tänk bara på kraften som kommer från att inkommande e-postmeddelanden automatiskt genererar nya uppgifter eller nya kalenderavtaler, eller om du har en färdig uppgift skickar du automatiskt din chef till den uppdaterade statusrapporten från arbetsbeskrivningen.

Om du gör det rätt kan du skära hela dagens arbetsbelastning med en båtlast bara genom att automatisera saker på ett intelligent och effektivt sätt.

Om du följer mitt skrivande här vet du att jag tidigare har täckt saker som att integrera webbläsarfunktioner i Excel. Hur man gör din egen grundläggande webbläsare med hjälp av VBA. Så här gör du din egen grundläggande webbläsare med hjälp av VBA. När du verkligen slutar att tänka på det, en webbläsare i sin enklaste form är inte så imponerande en applikation. Jag menar, ja, Internet är fantastiskt av någons standarder. Konceptet att länka ... Läs mer, automatiskt maximera applikationsfönstren 3 sätt att öppna applikationer och Windows maximeras med VB Script [Windows] 3 sätt att öppna applikationer och Windows maximeras med VB Script [Windows] Om det finns en sak jag älskar att göra, det är skrivet VB-skript. Oavsett om det är en Windows Script-fil eller ett VBA-skript i ett program, ger skript möjligheten att lägga till funktionalitet för program ... Läs mer eller automatisera diagramuppdateringar i Excel Så här skapar du självuppdaterande Excel-diagram i tre enkla steg Hur man skapar själv- Uppdatering av Excel-diagram i tre enkla steg Vi visar hur du gör din Excel-diagram självuppdatering. Lägg bara till nya data och kolla hur de automatiskt visas i din graf. Det är snabbt och enkelt. Läs mer .

Nåväl, i den här artikeln kommer jag att täcka en annan automatiseringsuppgift - egentligen en som jag har använt ofta mer nyligen - att automatiskt uppdatera ett Excel-kalkylblad med alla dina återstående aktiva Outlook-uppgifter i slutet av dagen.

Mata Outlook-uppgifter till ett Excel-kalkylblad

Det finns många anledningar som du kanske vill göra detta. Kanske vill du spåra dina oavslutade uppgifter dagligen i ett format som du snabbt kan maila till någon (inte så lätt att göra med Outlook-uppgifter). Eller kanske blir det en del av en större rapport som du skriver in i Word.

Oavsett vad som är fallet är möjligheten att fånga och skriva ut ofullständig Outlook-uppgiftsinformation en användbar sak.

För det här exemplet är här mitt exempel i Outlook-uppgiftslistan med 5 återstående uppgifter som jag fortfarande inte har slutfört än.

Allt vi ska göra här är i VBA. I Outlook kommer du till VBA-redigeraren genom att klicka på “Verktyg“, sedan “Makro” och sedan välja “Visual Basic Editor“.

Koden som du ska använda för att fånga din uppgiftslista och exportera den till Excel är faktiskt inte så komplicerad som du kanske tror. Det första steget är att ansluta till både Outlook-objekt och Excel-objekt genom att skapa nödvändiga variabla definitioner. Sedan börjar du med att skapa huvudet i kalkylbladet med hjälp av det arbetsbokobjekt du skapade.

Dim strReport som sträng Dim dimnameSpace Som Outlook.NameSpace Dim taskFolder Som Outlook.MAPIFolder Dimma uppgifter Som Outlook.Items Dim tsk Som Outlook.TaskItem Dim objExcel Som New Excel.Application Dim exWb Som Excel.Workbook Dim sht Som Excel.Worksheet Dim strMyName As String Dim x As Integer Mått y Som helhet Ange exWb = objExcel.Workbooks.Open ("c: \ temp \ MyActiveTasks.xls") "exWb.Sheets (strMyName) .Delete 'exWb.Sheets.Add (strMyName) Ange olnameSpace = Application.GetNamespace ("MAPI") Ange taskFolder = olnameSpace.GetDefaultFolder (olFolderTasks) Ange uppgifter = taskFolder.Items strReport = "" Skapa Kopia exWb.Sheets ("Sheet1"). Celler (1, 1) = "Ämne" exWb Celler (1, 3) = "Procent Complete" exWb.Sheets ("Sheet1"). Celler (1, 2) = "Förfallodatum" exWb.Sheets ("Sheet1"). 1, 4) = "Status"

Så här ser det nya kalkylbladet ut. Din Outlook-app skapade bara en ny Excel-fil som heter “MyActiveTasks.xls” i katalogen C: \ temp och skapade en rubrik för de uppgifter som du ska infoga.

Så nu är det dags att extrahera dina uppgifter och sätta dem in i Excel-filen. Jag använder a “y” variabel börjar vid två för att se till att den första raden som används är inte den första, eftersom jag inte vill skriva över rubriken.

y = 2 För x = 1 Till tasks.Count Ställ tsk = tasks.Item (x) 'strReport = strReport + tsk.Subject + ";"' Fyll i data om inte tsk.Complete sedan exWbSheets ("Ryan") .Cells (y, 1) = tsk.Subject exWb.Sheets ("Ryan") .Celler (y, 2) = tsk.DueDate exWbSheets ("Ryan") .Celler (y, 3) = tsk.PercentComplete exWb .Sheets ("Ryan"). Celler (y, 4) = tsk.Status y = y + 1 Avsluta om nästa x

Vad det här skriptet gör är att söka igenom hela listan över uppgiftsobjekt i Outlook, kontrollerar om objektet är färdigt än, och om det inte är det, lägger det upp uppgifterna i 4 celler i kalkylbladet. Om du vill kan du lägga in mer information. Undersök bara vilken uppgiftsinformation som finns tillgänglig genom att skriva “tsk.” och sedan bläddra igenom listan över egenskaper som dyker upp.

Nu är här vad arket ser ut.

Att vara en perfektionist är fortfarande ett problem. Lägg märke till hur kolumn A klippde det sista ämnet?” Jag tycker inte om det. Så låt oss lägga till lite mer kod för att autofitera alla kolumner i Excel-tabellen.

'Autofit alla kolumnbredder för varje sht i ActiveWorkbook.Worksheets sht.Columns ("A") .Hela kolumn.AutoFit sht.Columns ("B") .Hela kolumn.AutoFit sht.Columns ("C") .Hela kolumn.AutoFit sht. Kolumner ("D"). Hela kolumnen.AutoFit Nästa sht exWb.Save exWb.Close Set exWb = Ingenting

De Spara och Stänga metoder i de sista få raderna sparar arket och stänger det så att det inte förblir låst av programmet, annars skulle det vara svårt att öppna Excel-filen tills du stängde Outlook.

Så nu är det vad det färdiga kalkylbladet ser ut.

När ställer du in skriptet för att springa? Jo, jag satte upp det för att springa på “Application.Close ()” händelse, som körs när du avslutar Outlook vid slutet av dagen. Detta gör att Outlook skapar Excel-kalkylarksrapporten i slutet av dagen, allt på egen hand.

Kan du tänka på andra coola användningsområden för denna teknik? Kanske skjuter automatiskt av ett e-postmeddelande med listan över uppgifter eller utmatar dem till en HTML-fil och FTPar den till din webbserver?

Med lite kreativitet är det fantastiskt vad du kan dra av med lite skriptautomatisering. Dela dina egna tankar och idéer i kommentarfältet nedan!

Shutterstock

Utforska mer om: Microsoft Excel, Microsoft Outlook, Kalkylark, Task Management, Visual Basic Programmering.