16. april 2008 - 12:57Der er
14 kommentarer og 1 løsning
gentagende indsættelse af data i xl fra vedhæftet fil i emails
I forbindelse med afslutningen på min kontor uddannelse, skal der laves en fagprøve. Til den fagprøve har jeg lavet et spørgeskema i xl, som jeg vil sende ud til 1000 mennesker. Når de har udfyldt skemaet og trykker på en afslut knap, bliver det udfyldte xl skema automatisk sendt tilbage til mig som en vedhæftet fil i en e-mail.
nu vil jeg så gerne samle alle svarne sammen i et xl regneark. Og hvordan gør jeg så lige det smartest? Kom endelig med nogle bud, for jeg er lidt på bar bund her.
Jeg bruger Outlook som mail program og har oprette en regel, så de alle havner i samme mappe.
det jeg skal bruge er: afsenders mail adresse og fra den vedhæftede xl fil, skal jeg bruge svarne som står i ark2 fra B17 til og med B29
Hvis der er nogen som kan hjælpe, ville jeg være lykkelig.
Rem I VBA skal der sættes en reference til Microsoft OutLook. I VBA-vinduet / Tools / References / Rem Microsoft OutLook 11.0 Object Library (11.0) er 2003-versionen) Rem ======================================================================== Rem Ellers send en mail til: pb@supertekst-it.dk - så returnerer jeg min fil Rem ========================================================================
Rem Kør nedenstående makro (hentSvarSkemaer) - med Alt+F8 når denne fil er åbnet.
Rem "Systemet" henter svarfiler fra Outlook og indsætter svar på Ark1 i denne fil
Public Sub henSvarSkemaer() Dim mailApp, Namespace, indbakke, svMappe, m, vf, aFold Dim svXLS, sti, afsender, xRæk, xKol
Set mailApp = CreateObject("Outlook.Application") Set Namespace = mailApp.GetNamespace("MAPI") Set aFold = Namespace.GetDefaultFolder(olFolderInbox) Set svMappe = aFold.Folders("spørgeskema")
Rem Hent stien for "systemet" sti = ActiveWorkbook.Path
Rem Start-række for de indsamlede svar xRæk = 1
If svMappe.Items.Count > 0 Then For m = 1 To svMappe.Items.Count
Rem er der 1 vedhæftet fil If svMappe.Items(m).Attachments.Count = 1 Then vf = LCase(svMappe.Items(m).Attachments(1).Filename) afsender = svMappe.Items(m).SenderName xKol = 2
Rem Gem filen midlertidigt filen svMappe.Items(m).Attachments(1).SaveAsFile sti + vf
Set svXLS = CreateObject("Excel.Application") With svXLS .Workbooks.Open sti + vf .ActiveWorkbook.Sheets(2).Activate Rem hent svar fra ark 2 Cells(xRæk, 1) = afsender For ræk = 17 To 29 svar = .Cells(ræk, 2) Cells(xRæk, xKol) = svar xKol = xKol + 1 Next ræk xRæk = xRæk + 1
Rem Slet objekt .Application.Quit Set svXLS = Nothing End With
Rem slet filen igen Kill sti + vf End If Next m End If
Rem Tilpas kolonnebredder ActiveSheet.Columns.AutoFit
Rem Afslutning MsgBox ("gennemgang er afsluttet") End Sub
Rem I VBA skal der sættes en reference til Microsoft OutLook. I VBA-vinduet / Tools / References / Rem Microsoft OutLook 11.0 Object Library (11.0) er 2003-versionen)
kan det have noget med det at gøre, da jeg køre 2007 version?
Ja grunden til at jeg er forviret, det er jeg køre åbenbart med en 2003 version af excel, men en 2007 version af outlook. men jeg kan ikke finde referencen til Microsoft OutLook ?? 12.0 i VBA
Jeg har endelig fået det til at virke, jeg havde lavet en fejl fra starten! Jeg skrev at mappen i outlook lå som en undermappe til indbakken, men det var en undermappe til 'private mapper'. Jeg så fejlen da du sendte mig et skærmprint af dine mapper. Tusinde tak for din tålmodighed, og tak for hjælpen, det hele virker som det skal nu. Lav et svar, så jeg kan give dig dine meget fortjente point.
Glædeligt - selv tak - held og lykke med projektet..
Koden var således (før ovenstående bemærkninger fra mr.9mm):
Rem KODEN INDSÆTTES I OUTLOOK (ALT+F11) ThisOutLookSession Rem Her gemmes de samlede svar: Const filTilSvar = "c:\svarfil.xls" Rem =============================== Public Sub henSvarSkemaer() Dim mailApp, Namespace, indbakke, svMappe, m, vf, aFold Dim svXLS, sti, afsender, xRæk, xKol Dim arkivXLS
On Error GoTo fejl
Set mailApp = CreateObject("Outlook.Application") Set Namespace = mailApp.GetNamespace("MAPI") Set aFold = Namespace.GetDefaultFolder(olFolderInbox) Set svMappe = aFold.Folders("spørgeskema")
Set arkivXLS = CreateObject("Excel.Application") With arkivXLS .Workbooks.Open filTilSvar End With
Rem stien for midlertidig gem af filer sti = "c:\"
Rem Start-række for de indsamlede svar xRæk = 1
If svMappe.Items.Count > 0 Then For m = 1 To svMappe.Items.Count
Rem er der 1 vedhæftet fil If svMappe.Items(m).Attachments.Count = 1 Then vf = LCase(svMappe.Items(m).Attachments(1).FileName) afsender = svMappe.Items(m).SenderName xKol = 2
Rem Gem filen midlertidigt filen svMappe.Items(m).Attachments(1).SaveAsFile sti + vf
Set svXLS = CreateObject("Excel.Application") With svXLS .Workbooks.Open sti + vf .ActiveWorkbook.Sheets(2).Activate Rem hent svar fra ark 2 arkivXLS.ActiveWorkbook.Sheets(1).Cells(xRæk, 1) = afsender For ræk = 17 To 29 svar = .Cells(ræk, 2) arkivXLS.ActiveWorkbook.Sheets(1).Cells(xRæk, xKol) = svar xKol = xKol + 1 Next ræk xRæk = xRæk + 1
Rem Slet objekt .Application.Quit Set svXLS = Nothing End With
Rem slet filen igen Kill sti + vf End If Next m End If
Rem Tilpas kolonnebredder arkivXLS.ActiveWorkbook.Sheets(1).Columns.AutoFit
Rem Luk arkivfil arkivXLS.ActiveWorkbook.Save arkivXLS.Application.Quit Set arkivXLS = Nothing Rem Afslutning MsgBox ("gennemgang er afsluttet")
Exit Sub
fejl: MsgBox ("Fejl! - anvend herefter F8 ved Stop - forsæt indtil markeringen kommer op i koden igen - denne viste linie er lige efter fejlen!")
Stop Resume Next End Sub
Synes godt om
Ny brugerNybegynder
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.