27. oktober 2009 - 15:40Der er
14 kommentarer og 1 løsning
fællesdokument
Hej Jeg har lavet et regneark der skal bruges af flere brugere. Er der nogen der kan hjælpe med at lave det således at når en bruger har indtastet noget i det fælles ark sendes en e-mail besked om ændringer til de øvrige brugere. Mvh Knud
Private Sub worksheet_change(ByVal Target As Excel.Range) If Not Intersect(Target, Range(områdeForÆndring)) Is Nothing Then sendMail ("Følgende er ændret: " & CStr(Target.Address)) End If End Sub Private Sub sendMail(meddelelse) Dim mailApp, Namespace, nyMail Dim emne, body
emne = "Regnarket xxx.xls er ændret!" body = meddelelse
On Error GoTo sendMailFejl
Set mailApp = CreateObject("Outlook.Application") Set Namespace = mailApp.GetNamespace("MAPI")
Set nyMail = mailApp.CreateItem(olMailItem) Set TilModtager = nyMail.Recipients.Add(modtagerListe)
nyMail.Subject = emne nyMail.body = meddelelse
nyMail.Display
Rem Automaisk send - fjern Rem Rem nyMail.Send Exit Sub
tak - der sker en fejl når scriptet kommer til automatisk send.
Jeg har måske også udtrykt mig lidt uklart. Som det er nu sendes der en mail ved enhver ændring i regnearket. Det jeg mente , men ikke fik skrevet helt klart, var at når der var lavet en ændring og regnearket var gemt.
Jeg er heller ikke helt med på hvad du mener med " Referencen for OutLook skal sættes i VBA / Tools / References " hvor skal dette ændres - sættes
Fra regnearket / Alt+F11(VBA-vinduet åbnes) / Tools / References / referencer står i alfabetisk orden - find Microsoft Outloook... - sæt flueben + OK - luk VBA vinduet.
Rem Version 2 Rem ========= Rem Koden indsættes i ThisWorkbook i VBA-vinduet <<<<<<<------ Rem ============================================
Const modtagerListe = "aa@supertekst-it.dk;bb@supertekst-it.dk" Const områdeForÆndring = "A1:C4" Private Sub Workbook_BeforeClose(Cancel As Boolean) If ActiveWorkbook.Saved = False Then ActiveWorkbook.Save afSendMail End If End Sub Private Sub afSendMail() Dim mailApp, Namespace, nyMail Dim emne, body
emne = "Regnarket xxx.xls er ændret!" body = meddelelse
On Error GoTo sendMailFejl
Set mailApp = CreateObject("Outlook.Application") Set Namespace = mailApp.GetNamespace("MAPI")
Set nyMail = mailApp.CreateItem(olMailItem) Set TilModtager = nyMail.Recipients.Add(modtagerListe)
nyMail.Subject = emne nyMail.body = ""
nyMail.Display
Rem Automaisk send - fjern Rem Rem nyMail.Send Exit Sub
jaså - det forklarer selvfølgelig og det kunne den opmærksomme også selv have læst.
så kører det men der komme en boks op der advarer mod at et program prøver at komme ind i min adressebog. ?
efter jeg har givet tilladelse kommer jeg ind i mailen og skal derfra trykke send
jeg kan ikke få den til at sende automtisk hvilket ville være ønskeligt.
Jeg vil gerne om du kan lave det således at kun er når brugeren manuelt gemmer regnearket at koden startes koden og kun i dette tilfælde. Din version er smart nok men det kræver jo at man logger ud.
Rem Version 3 Rem ========= Rem Koden indsættes i ThisWorkbook i VBA-vinduet Rem ============================================ Const modtagerListe = "aa@supertekst-it.dk;bb@supertekst-it.dk" Const områdeForÆndring = "A1:C4" Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) afSendMail End Sub Private Sub afSendMail() Dim mailApp, Namespace, nyMail Dim emne, body
emne = "Regnarket xxx.xls er ændret!" body = meddelelse
On Error GoTo sendMailFejl
Set mailApp = CreateObject("Outlook.Application") Set Namespace = mailApp.GetNamespace("MAPI")
Set nyMail = mailApp.CreateItem(olMailItem) Set TilModtager = nyMail.Recipients.Add(modtagerListe)
nyMail.Subject = emne nyMail.body = ""
Rem nyMail.Display
Rem Automaisk send - fjern Rem nyMail.Send Exit Sub
prøv at sende din fil til mig (mailadr. under min profil)
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.