Slik eksporterer du Outlook-oppgaver til Excel med VBA

Slik eksporterer du Outlook-oppgaver til Excel med VBA / Windows

Enten du er en fan av Microsoft, er det en god ting som kan sies om MS Office-produkter, i hvert fall hvor enkelt det er å integrere hverandre med hverandre.

Tenk bare på kraften som kommer fra å ha innkommende e-postmeldinger som automatisk genererer nye oppgaver eller nye kalenderavtaler, eller hvis du har en fullført oppgave, send e-posten sjefen din automatisk med den oppdaterte statusrapporten fra oppgavebeskrivelsen.

Hvis du gjør det riktig, kan du kutte hele dagen din arbeidsbelastning med en båtlast bare ved å automatisere ting på en intelligent og effektiv måte.

Hvis du følger min skriving her, vet du at jeg tidligere har dekket ting som å integrere nettleserfunksjoner i Excel. Hvordan lage din egen grunnleggende nettleser ved hjelp av VBA. Hvordan lage din egen grunnleggende nettleser ved hjelp av VBA. Når du virkelig stopper å tenke på det, en nettleser i sin enkleste form er egentlig ikke så imponerende et program. Jeg mener, ja, Internett er fantastisk av alles standarder. Konceptet om å koble ... Les mer, automatisk maksimering av applikasjonsvinduer 3 måter å åpne programmer og Windows maksimert med VB Script [Windows] 3 måter å åpne programmer og Windows maksimert med VB Script [Windows] Hvis det er en ting jeg elsker å gjøre, det er skrive VB skript. Enten det er en Windows Script-fil eller et VBA-skript inne i et program, gir skripting muligheten til å legge til funksjonalitet for programmer ... Les mer eller automatisere diagramoppdateringer i Excel Hvordan lage selvoppdaterende Excel-diagrammer i tre enkle trinn Hvordan lage selv- Oppdaterer Excel-diagrammer i tre enkle trinn Vi viser deg hvordan du lager din Excel-diagram selvoppdatering. Bare legg til nye data og se hvordan de automatisk vises i grafen din. Det er raskt og enkelt. Les mer .

Vel, i denne artikkelen skal jeg dekke en annen automatiseringsoppgave - faktisk en som jeg har brukt ofte nylig - for å automatisk oppdatere et Excel-regneark med alle de gjenværende aktive Outlook-oppgavene på slutten av dagen.

Feeding Outlook-oppgaver til et Excel-regneark

Det er mange grunner til at du kanskje vil gjøre dette. Kanskje du vil spore dine uferdige oppgaver daglig, i et format som du raskt kan sende ut til noen (ikke så lett å gjøre med Outlook-oppgaver). Eller kanskje blir det en del av en større rapport som du skriver inn i Word.

Uansett hva som er tilfelle, er evnen til å fange og utføre ufullstendig Outlook-oppgaveinformasjon en nyttig ting.

For dette eksempelet, her er Outlook-oppgavelisten med 5 gjenværende oppgaver som jeg ennå ikke har fullført.

Alt vi skal gjøre her, er i VBA. I Outlook kommer du til VBA-editoren ved å klikke på “Verktøy“, deretter “Makro” og deretter velge “Visual Basic Editor“.

Koden som du skal bruke til å fange opp oppgavelisten og eksportere den til Excel, er faktisk ikke så komplisert som du kanskje tror. Det første trinnet er å koble til både Outlook-objekter og Excel-objekter ved å skape de nødvendige variable definisjonene. Deretter starter du ved å lage heftet i regnearket ved hjelp av arbeidsbokobjektet du har opprettet.

Dim strReport Som String Dim olnameSpace Som Outlook.NameSpace Dim taskFolder Som Outlook.MAPIFolder Dim oppgaver Som Outlook.Items Dim tsk Som Outlook.TaskItem Dim objExcel Som Ny Excel.Application Dim exWb Som Excel.Workbook Dim sht Som Excel.Worksheet Dim strMyName As String Dim x Som helhet Dim y Som integer Angi exWb = objExcel.Workbooks.Open ("c: \ temp \ MyActiveTasks.xls") 'exWbSheets (strMyName) .Delete' exWb.Sheets.Add (strMyName) Angi olnameSpace = Application.GetNamespace ("MAPI") Angi taskFolder = olnameSpace.GetDefaultFolder (olFolderTasks) Angi oppgaver = taskFolder.Items strReport = "" 'Opprett overskrift exWb.Sheets ("Sheet1"). Cells (1, 1) = "Subject" exWb Celler (1, 3) = "Percent Complete" exWb.Sheets ("Sheet1"). Celler (1, 2) = "Forfallsdato" exWbSheets ("Sheet1"). 1, 4) = "Status"

Så, her ser det nye regnearket ut. Outlook-appen din har nettopp opprettet en ny Excel-fil som heter “MyActiveTasks.xls” i katalogen C: \ temp, og opprettet en overskrift for oppgavene du skal sette inn.

Så nå er det på tide å trekke ut oppgavene dine og sette dem inn i Excel-filen. Jeg bruker a “y” variabel starter ved to for å sikre at den første raden som er brukt, ikke er den første, fordi jeg ikke vil overskrive overskriften.

y = 2 For x = 1 Til tasks.Count Sett tsk = tasks.Item (x) 'strReport = strReport + tsk.Subject + ";"' Fyll inn data hvis ikke tsk.Complete Så exWbSheets ("Ryan") .Cells (y, 1) = tsk.Subject exWb.Sheets ("Ryan") .celler (y, 2) = tsk.DueDate exWb.Sheets ("Ryan") .celler (y, 3) = tsk.PercentComplete exWb .Sheets ("Ryan") .celler (y, 4) = tsk.Status y = y + 1 Slutt hvis neste x

Hva dette skriptet gjør er å søke gjennom hele listen over oppgaveposter i Outlook, kontrollerer for å se om elementet er ferdig ennå, og hvis det ikke er det, legger det opp oppgavelinjen i 4 celler i regnearket. Hvis du vil, kan du sette inn mer informasjon. Bare undersøk hvilken oppgaveinformasjon som er tilgjengelig ved å skrive “tsk.” og deretter bla gjennom listen over egenskaper som dukker opp.

Nå er det hvordan arket ser ut.

Å være litt av en perfeksjonist, er fortsatt et problem. Legg merke til hvordan kolonne A klipper det siste oppgavemålet?” Jeg liker ikke det. Så la oss legge til litt mer kode for å autofit alle kolonnene i Excel-tabellen.

'Autofit alle kolonnebredder For hver sht I ActiveWorkbook.Worksheets sht.Columns ("A") .HeleColumn.AutoFit sht.Columns ("B") .HeleColumn.AutoFit sht.Columns ("C") .HeleColumn.AutoFit sht. Kolonner ("D") .HeleColumn.AutoFit Neste sht exWb.Save exWb.Close Set exWb = Ingenting

De Lagre og Lukk metoder i de siste par linjene vil lagre arket og lukke det slik at det ikke forblir låst av applikasjonen, ellers ville det være vanskelig å åpne Excel-filen til du lukket Outlook.

Så nå ser det ut som det ferdige regnearket ser ut.

Når setter du skriptet til å løpe? Vel, jeg satte det opp for å løpe på “Application.Close ()” hendelse, som løper når du avslutter Outlook på slutten av dagen. Dette vil få Outlook til å produsere Excel-regnearkrapporten på slutten av dagen, alt på egenhånd.

Kan du tenke på noen andre kule bruksområder for denne teknikken? Kanskje automatisk avfyring av en e-post med listen over oppgaver, eller å sende dem til en HTML-fil og FTPing den til webserveren din?

Med litt kreativitet er det utrolig hva du kan trekke av med litt skriptingautomatisering. Del dine egne tanker og ideer i kommentarfeltet nedenfor!

Shutterstock

Utforsk mer om: Microsoft Excel, Microsoft Outlook, Regneark, Oppgavebehandling, Visual Basic Programmering.