Jeg har brug for at lave en makro i Excel der gør følgende:
1.: Gem mit exeldokument i en sti - Det har jeg løst sådan her !
Sub Makro1() ' ' Makro1 Makro ' Makro indspillet 14-12-2006 af Jacob Skjødt Møller '
' ChDir "c:\" ActiveWorkbook.SaveAs Filename:="c:\" & Range("C6").Value & ".xls", _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub
2. Overfører excel-filen til Outlook, hvor den vedhæfter den en ny mail, der åbnes automatisk.
3. Adr. felt udfyldes automatisk
4. Emnefelt udfyldes automatisk med filnavn
5. Posten afsendes i Outlook
Hvis det kan lade sig gøre vil det være helt kanon !
Den forkromede løsning vil så være at den enkelte excel-fil hedder noget unikt - fx. at der kobles fortløbende nr. ind i filnavnet. Så jeg kan gennem excel-filerne fortløbende, men stadig overføre den aktuelle fil med makroen
Har oprettet filen basis.xls i en mappe - koden ligger i VBA/Ark1 I samme mappe er der oprettet en undermappemed navnet xlsArkiv - her gemmes de filer, som tilpasses på grundlag af "basis" og efterfølgende sendes via Outlook. Filerne lagres i xlsArkiv under det valgte filnavn fra C6 - indledende med et løbenr, der beregnes på basis af antallet af filer i xlsArkiv. Derfor må disse filer ikke slettes - eller princippet skal laves om - hvilket også kan lade sig gøre - f.eks. via en tekstfil, der indeholder løbenr.
Kode ser således ud:
Dim xSti, filNr, filNavn Const gemMappe = "xlsArkiv\" 'mappe til filer, der sendes - ligger i samme mappe som basis.xls Sub KlarTilOutLook() findSti filNr = findNæsteFilnr gemFilen
sendFilen "Modtager@mail.dk", filNavn, ActiveWorkbook.FullName 'modtager@mail.dk skal erstattes af ........
Rem Luk filen ActiveWorkbook.Close End Sub Private Sub findSti() xSti = ActiveWorkbook.Path If Right(xSti, 1) <> "\" Then xSti = xSti + "\" End If End Sub Private Function findNæsteFilnr() 'tæller antal filer i mappen Dim fs, f, f1, fc, s, antalFiler antalFiler = 0
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(xSti + gemMappe) Set fc = f.Files For Each f1 In fc antalFiler = antalFiler + 1 Next
findNæsteFilnr = antalFiler + 1 End Function Private Sub gemFilen() Dim xFilnr xFilnr = fireTegn(CStr(filNr)) 'udvid filnr til 4 tegn
filNavn = Range("C6").Value
ActiveWorkbook.SaveAs Filename:=xSti + gemMappe + "Fil_" + xFilnr + "_" & filNavn + ".xls", _ FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False End Sub Private Function fireTegn(nr) While Len(nr) < 4 nr = "0" + nr Wend
fireTegn = nr End Function Public Sub sendFilen(modtager, emne, vedhft) Dim mailApp, Namespace, nyMail, att Set mailApp = CreateObject("Outlook.Application") Set Namespace = mailApp.GetNamespace("MAPI")
Set nyMail = mailApp.CreateItem(olMailItem) Set nymod = nyMail.Recipients nymod.Add modtager
Set att = nyMail.Attachments att.Add vedhft nyMail.Subject = emne
nyMail.Display 'visning af mail nyMail.Send 'send mailen End Sub
Selv tak - du får et svar og så accepterer du blot dette.
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.