Avatar billede folj Forsker
23. maj 2016 - 10:26 Der er 10 kommentarer og
1 løsning

Få excel til et oprette Outlook-taks der sendes til en kollega.

Med referece til et tidligere spørgsmål http://www.eksperten.dk/spm/1010028 der nu er afsluttet, så opretter min excel-VBA-automatisering nogle tasks i min egen Outlook.

Jeg lavede en løsning kraftigt inspireret en det jeg fandt på mrexcelguru.com:

På siden http://mrexcelguru.com/create-tasks-in-outlook-from-excel/ er der et link til en fil der kan hentes ned, og den hjalp mig med en løsning der virker.

Jeg poster lige koden her også:
Bemærk at den er delt i to procedurer og én function der kalder hinanden.

Dim bWeStartedOutlook As Boolean

Sub Transfer()

Dim BatchNrCol As Integer
Dim BatchEndDateCol As Integer ' variabel til hvilken kolonne har jeg batchenes slutdatoer
Dim TaskCreatedCol As Integer ' variabel til hvilken kolonne vil jeg markere at OutlookTask er genereret
Dim TaskSubjectStr As String
Dim BatchStr As String
Dim DueDate As Date

BatchNrCol = 1
BatchEndDateCol = Cells(1, SLUTDATOER_ML).Column + 2
TaskCreatedCol = BatchEndDateCol + 15
 
RowNr = FindActualBatch("I") ' jeg kalder en function der finder rækken med den igangværende batch.
BatchStr = Cells(RowNr, BatchNrCol)
DueDate = Cells(RowNr, BatchEndDateCol).Value

' tjekker om der allerede er oprettet task
If Not Cells(RowNr, TaskCreatedCol).Value = "OutlookTask Created" Then

' hvis ikke så opretter vi en task
TaskSubjectStr = "Kontroller slutprøver fra IA-batch " & BatchStr & ", og bestil rengøringshold til næste gang"
Cells(RowNr, TaskCreatedCol).Value = "OutlookTask Created"

Call AddTask(TaskSubjectStr, DueDate)
End If

End Sub



Sub AddTask(sString As String, dDueDate As Date)
Dim olApp As Object
Dim objTask As Object

'Start Outlook if not started
On Error Resume Next ' deaktverer fejlmedd.
  Set olApp = GetOutlookApp ' funktionskald der tjekker om outlook er åben - ellers åbner vi outlook
On Error GoTo 0

If Not olApp Is Nothing Then
  Set objTask = olApp.CreateItem(3) ' generer en ny Task
 
  With objTask ' sætter nogle egenskaber i task'en
    .StartDate = dDueDate ' startdato - bruger samme som slutdato
    .DueDate = dDueDate
    .Subject = sString
    .Save ' springer diaplay over og går direkte til gem
  End With

End If

If bWeStartedOutlook Then
  olApp.Quit
End If
Set olApp = Nothing
Set objTask = Nothing

End Sub



Function GetOutlookApp() As Object
' function tjekker om Outlook er åben ellers åbner vi Outlook

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

End Function


Spørgsmål:
Kan jeg lave en udgave der sender den oprettede Task til en kolega ?
Avatar billede jakobdo Ekspert
23. maj 2016 - 10:34 #1
Jeg er hverken excel haj eller har testet denne, men måske noget i stil med:

http://www.mrexcel.com/forum/excel-questions/52914-sending-ms-outlook-task-item-excel.html#post244412
Avatar billede ebea Ekspert
23. maj 2016 - 10:55 #2
Her er et Link til en opsætning, som laver det du efterspørger.

Kig på spørgsmål #3 i listen i Linket, og tag det ud fra den opsætning, som vedr. afsendelse af mail.

http://www.mrexcel.com/forum/excel-questions/710212-visual-basic-applications-code-convert-excel-pdf-email-attachment.html
Avatar billede folj Forsker
23. maj 2016 - 13:45 #3
Jamen det er tilsyneladende ikke så enkelt.
Jeg har skelet til hvordan man gør når man sender en mail, og forsøger at sætte nogle tlsvarende egenskaber, men det fejler på den linie der hedder ".To = mailadressen"

If Not olApp Is Nothing Then
  Set objTask = olApp.CreateItem(3) ' generer en ny Task
 
  With objTask ' sætter nogle egenskaber i task'en
    .StartDate = dDueDate ' startdato - bruger samme som slutdato
    .DueDate = dDueDate
    .Subject = sString & " og ny batch starter op"
    .Body = BodyStr
    .To = "jlnc@novonordisk.com"
    .Send ' springer diaplay over og går direkte til send
'    .Save ' springer diaplay over og går direkte til gem
  End With
End If
Avatar billede ebea Ekspert
23. maj 2016 - 15:24 #4
Prøv at gennemgå din mailopsætning en gang til.
Der mangler noget opsætning i det du viser her, i forhold til at kunne sende noget.
Avatar billede folj Forsker
23. maj 2016 - 16:49 #5
@ebea:
Du har spottet at den postede kode er et udsnit af den sub-proceduren 'AddTask' som jeg postede i det første indlæg, ikk'.

Jeg forsøger mig med at tilføje et par andre  egenskaber, menlig .To og .Send.

Mener du stadig jeg mangler noget i min opsætning af den mail der skal sendes, så hører jeg gerne herom.
Avatar billede ebea Ekspert
23. maj 2016 - 16:56 #6
ja, det har jeg "spottet". Derfor mit svar #5.

Men det ville være nemmere, hvis det var muligt at afprøve dit Excel Ark. Jeg prøvede at lave en opstiling ud fra din henvisning, men det gav ikke rigtig mening, da jeg ikke kender hvad du vil i dit Excel ark.
Brug evt. min mail i min profil, og send dit ark.
Avatar billede ebea Ekspert
23. maj 2016 - 23:49 #7
Jeg har lavet et eksempel med mail sending, ud fra det Link som du angav i dit åbnings spørgsmål, og som var udgangspunkt til dine task/opgaver.

Hvis du sender mig en mail, returnerer jeg den til dig, med eksemplet.
Avatar billede folj Forsker
24. maj 2016 - 08:56 #8
@ebea:
Du efterspørger at kunne teste det selv i filen.

Jeg er ved at lave en udgave af filen der er renset for forretningskritiske data, som jeg gerne vil sende til dig.

Håber at have den klar i løbet af den næste times tid.
Avatar billede folj Forsker
24. maj 2016 - 11:51 #9
@ebea: Har sendt til men mail med en eksempelfil...
Avatar billede folj Forsker
26. maj 2016 - 11:02 #10
Eksperten ebea leverede løsningen.
Efter han fik tilsendt mail med excelfilen, så kan jeg koge, det han leverede, ned til at han har tilføjet et par egenskaber i min funktion til afsendelse af task, som jeg ikke havde i spil.

Den egenskab som jeg forsøgte at tilgå ".To" fejlede. Det viser sig at egenskaben ".To" slet ikke findes på dette object.
Derimod var det egenskaberne Recipients.Add og Assign der skulle i spil.

Min kode i sub-proceduren AddTask kom derfor til at se således ud:
Sub AddTask(sString As String, dDueDate As Date)
Dim olApp As Object
Dim objTask As Object

'Start Outlook if not started
On Error Resume Next ' deaktverer fejlmedd.
  Set olApp = GetOutlookApp ' funktionskald der tjekker om outlook er åben - ellers åbner vi outlook
On Error GoTo 0 ' slår fejlmedd. til igen

If Not olApp Is Nothing Then
  Set objTask = olApp.CreateItem(3) ' generer en ny Task
 
  With objTask ' sætter nogle egenskaber i task'en
    .StartDate = dDueDate ' startdato - bruger samme som slutdato
    .DueDate = dDueDate
    .Subject = sString
    .Recipients.Add ("xxx@xxx.com ") '<---- Her indsættes mail/task modtager
    .Assign
    .Save
    .Display
    .Send

  End With

End If

If bWeStartedOutlook Then ' hvis vi startede brugerens Outlook, så lukker vi den også igen.
  olApp.Quit
End If
Set olApp = Nothing
Set objTask = Nothing

End Sub


@jakobdo:
og så vil du sige at det var jo også det jeg henviste til i mit svar. Righ, men jeg forstod ikke budskabet så. Du skrev også at u vidste ikke noget om det og gav derfor indtryk af at det var rent gætteri. Og gætteri var netop det jeg ikke havde brug for. Jeg søgte en der vidste hvad der skulle til, og det gjorde ebea.

@ebea:
Er du sød og smide et svar så jeg kan lukke spørgsmålet.
Du har ydet en fantasktisk hjælp.
undskyld at jeg brugte et par kommentarer på at afklare at du vidste lidt om det.

I nogle spørgsmål ser man desværre at der kommer nogle simple gæt fra en eksperten-bruger, der egentlig ikke ved noget om emnet, men bare gætter.

Det var heldigvis ikke tilfældet her. Du ved noget om det, og du leverede lige de guldkorn der manglede.
Tak for din indsats.
Avatar billede ebea Ekspert
26. maj 2016 - 11:19 #11
Du er velkommen! ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester