Avatar billede Slettet bruger
28. august 2009 - 10:26 Der er 7 kommentarer og
1 løsning

VBScript til indlæsning af data fra Excel til distributionsliste i Outlook

Jeg har brug for at få lavet et lille VBScript som kan følgende:

Jeg skal importere nogle data fra et Excelark til "kontaktpersoner" i Outlook. De data vil jeg gerne parre med nogle distributionslister i Outlook. Jeg forestiller mig et vbscript med nogle hardcodet værdier. Hvis der står "liste1" i kolonne "c" i Excel, så skal alle de rækker i Excel som har "liste1" i kolonne c, tilnyttes en distributionsliste i Outlook af samme navn o.s.v. Nogen der kan hjælpe med det?
Avatar billede fedtoere Praktikant
28. august 2009 - 13:09 #1
Jeg har tidligere lavet et enkeltstående program i Excel hvori alle e-mails var listet. I mit excel ark havde jeg så forskellige kolonner hvori jeg kunne sætte tilknytning mm.
Vha dette kunne man så udvælge alle de e-mails som hørte til den ønskede gruppe. Jeg benytte så blot at lave et felt i excel-arket hvori alle disse e-mails stod semikolon separerat. Så brugte jeg copy+paste for at flytte disse til outlook.
Ikke smukt, men vil virke altid ligegyldigt om det er outlook eller web baseret mail (hvis man kan udskifte ; med f.eks , ).

Det er ikke specielt "fancy" men det er overskueligt og så virker det.
Avatar billede Slettet bruger
28. august 2009 - 13:27 #2
Det jeg faktisk har brug for er, at når man vælger at importere mit excelark til Outlook, så skal koden ved importen sætte kontaktpersonerne som kommer ind i Outlook, ind i en bestemt distributionsgruppe.
Jeg skal løbende læse 400 emailadresser ind i Outlook, og så sætte dem i en distributionsgruppe. det er så den sidste del jeg gerne vil have automatiseret :-)
Avatar billede fedtoere Praktikant
28. august 2009 - 13:56 #3
hmmm, ja det har jeg ikke lige rodet med (endnu) :-)
Avatar billede Slettet bruger
31. august 2009 - 09:30 #5
Ja, det ligner noget.

Kan du kombinere det til mig??
Jeg vil gerne have en kolonne i Excel-arket hvor navnet på distributionslisten står, og der kan stå flere forskellige navne på lister, så det skal scriptet kunne finde ud af...
Avatar billede Slettet bruger
02. september 2009 - 10:52 #6
Nu ser min makrokode i Outlook sådan her ud:

Function CreateDistList(FullName As String, EmailAddresses As String, Categories As String, DistName As String) As Boolean
' create Outlook distribution list contact from Excel
' stored in default Contacts folder

' EmailAddresses: a comma-delimited string literal list of valid email addresses
' DistName: a string literal name for the distribution list

Dim bWeStartedOutlook As Boolean

On Error GoTo ErrorHandler

'Dim vAddr As Variant
vAddr = Split(EmailAddresses, ",")

' get Outlook
Dim olApp As Object ' Outlook.Application
Set olApp = GetOutlookApp

' create distribution list items
Dim olDistListItem As Object ' Outlook.DistListItem
Dim tempMailItem As Object ' Outlook.MailItem
Dim tempRecipients As Object ' Outlook.Recipients

Set olDistListItem = olApp.CreateItem(7) ' olDistributionListItem
olDistListItem.DLName = DistName

' create dummy mailitem to pass recipient object to DistListItem
Set tempMailItem = olApp.CreateItem(0) ' olMailItem
' Outlook Object Model Guard will be triggered here
Set tempRecipients = tempMailItem.Recipients

Dim i As Long
For i = 0 To UBound(vAddr)
  tempRecipients.Add (vAddr(i))
Next i

With olDistListItem
  .AddMembers tempRecipients
  .Close olSave
End With

' if we got this far, assume success
CreateDistList = True
GoTo ExitProc

ErrorHandler:
CreateDistList = False

ExitProc:
Set tempRecipients = Nothing
Set tempMailItem = Nothing
Set olDistListItem = Nothing
If bWeStartedOutlook Then
  olApp.Quit
End If
Set olApp = Nothing
End Function

Function GetOutlookApp() As Object
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




Sub ReadContacts()

Dim success As Boolean

Const olContactItem = 2

Set objOutlook = CreateObject("Outlook.Application")

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\import.xls")

x = 1

Do Until objExcel.Cells(x, 1).Value = ""

    Set objContact = objOutlook.CreateItem(olContactItem)
    objContact.FullName = objExcel.Cells(x, 1).Value
    objContact.Email1Address = objExcel.Cells(x, 2).Value
    objContact.Categories = objExcel.Cells(x, 3).Value
    olDistListItem = objExcel.Cells(x, 3).Value
    objContact.Save

    x = x + 1
 
  success = CreateDistList(objContact.FullName, objContact.Email1Address, objContact.Categories, objContact.Categories)
 
Loop
 
objExcel.Quit

End Sub
Avatar billede Slettet bruger
02. september 2009 - 10:53 #7
Men da linien:
success = CreateDistList(objContact.FullName, objContact.Email1Address, objContact.Categories, objContact.Categories)

står ind i en loop, så oprettes der jo 2 distributionslister med samme navn hver gang et navn optræder flere gange i kolonne C...

Nogen der kan hjælpe med at tilrette koden???
Avatar billede Slettet bruger
15. januar 2012 - 15:55 #8
sdsd
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
Kategori
Kurser inden for grundlæggende programmering

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