17. april 2007 - 10:28Der er
22 kommentarer og 1 løsning
Pdf og mail regneark via vb
Jeg har to kode stumper. En der mail mit regneark rundt og et der gemmer regneark som PDF. Hvordan kombinere jeg dem, således at regnearket først gemmes som PDF og mails rundt i samme VB kode i excel - er det muligt ??
Kode 1 - mail excelark rundt:
FilNavn = ThisWorkbook.Name 'Undersøg om mailsystem til stede If Application.MailSystem <> xlNoMailSystem Then
' MsgBox "Du har valgt at maile salgstallene rundt. Du skal derfor svare ja næste gang for at tillade Outlook at sende salgstallene.", vbInformation, "Postmeddelelse" Worksheets("Butikker").Shapes("cmdUpdateText").Visible = False Workbooks(FilNavn).Worksheets("Data").Range("e8") = Now Workbooks(FilNavn).Worksheets("Data").Range("f8") = "af " & Application.UserName ActiveWorkbook.Save
On Error GoTo Errorhandler With ActiveWorkbook .SendMail _ Recipients:=Workbooks(FilNavn).Worksheets("Data").Range("c9:c21"), _ Subject:=Range("A66").Value .Close SaveChanges:=False End With Application.MailLogoff Sheets(Array("Butikker", "Salgstal-graf")).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Exit Sub
Errorhandler: MsgBox "Du svarede NEJ til at maile salgstal rundt. Genåben hvis du vil maile senere.", vbInformation, "Postmeddelelse" ActiveWindow.Close SaveChanges:=False Application.CutCopyMode = False
Else MsgBox "Mailprogrammet er ikke tilgængelig. Salgstal bliver derfor ikke mailet rundt. Prøv igen senere!", vbInformation, "Postmeddelelse" ActiveWindow.Close SaveChanges:=False Application.CutCopyMode = False End If
Kode2 - Gem som PDF:
Public Sub PrinttoPDF() Dim objDistiller As Object Dim strADB_FileName As String Dim strPSFileName As String Dim strFileName As String Dim logFileName As String
Set objDistiller = CreateObject("Pdfdistiller.PdfDistiller")
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Har ikke testede den men det er noget som den her du skal bruge. Det er til MS Outlook,
Sub SendEMail() Dim Email As String, Subj As String Dim MSG As String, URL As String Dim r As Integer, x As Double 'data in rows 2-4 Rem Get the email address Email = "Bruger@domæne.dk" bygMail r End Sub Private Sub bygMail(r) Dim mailThis As Outlook.MailItem Dim MSG As String Dim Email As String Dim Subj As String Dim Disk As String, Filtype As String Dim x As Long Disk = "c:\salgstal\" ChDir Disk Filtype = ".pdf" Filnavn = "Din pdf" Set mailThis = CreateItem(olMailItem) Email = Cells(r, 30) Subj = Cells(1, 66)
Lav min PrinttoPDF-procedure om til en funktion, der returnerer filnavnet (som jo er den fulde sti og navn) på din nu genererede pdf-fil. Denne kan du så vedhæfte en mail direkte uden at bruge ChDir - men du skal have fat i Outlook direkte i stedet for at bruge Excel til at skabe mailen.
Word-haj - det skal jeg nok bruge et eksempel på !!! Betyder det, at jeg skal lave en normal mail og vedhæfte filen hvergang eller hvordan gøres det smart.
Du kan sagtens gøre det fra Excel, du skal så "bare" smide Outlook i luften i din Excel-kode. Her kan du så bruge noget af den kode, som splokit så venligt har leveret, men i stedet for at skifte folder og strikke filnavnet sammen og bruge det i mailThis.Attachments.Add, bruger du filnavnet fra funktionen med konverteringen til pdf.
Omdan pdf-proceduren til en funktion, som giver dig filnavnet tilbage:
Public Function PrinttoPDF() as string Dim objDistiller As Object Dim strADB_FileName As String Dim strPSFileName As String Dim strFileName As String Dim logFileName As String
Set objDistiller = CreateObject("Pdfdistiller.PdfDistiller")
Nej, du kan ikke nøjes med at bruge den ene linje fra splokit. Du er nødt til at have en reference til outlook, modtager af mailen osv. også.
Jeg vil foreslå, at du laver en streng-variabel:
strPDFFilename = PrinttoPDF
Når du har lavet printpdf-proceduren om til en funktion, vil den returnere filnavnet, som så "opbevares" i strPDFFilename. Dette kan du så sætte bag ...Add i stedet for at sætte PrinttoPDF der direkte. Så har du også mulighed for at tjekke, om du rent faktisk har fået returneret filnavnet, inden du går videre og forsøger at vedhæfte filen på en mail.
Sub SendEMail() Dim Email As String, Subj As String Dim MSG As String, URL As String Dim r As Integer, x As Double 'data in rows 2-4 Rem Get the email address Email = "user@domæne.dk" bygMail r End Sub
Private Sub bygMail(r) Dim mailThis As Outlook.MailItem Dim MSG As String Dim Email As String Dim Subj As String Dim Disk As String, Filtype As String Dim x As Long ' Disk = "c:\" ' ChDir Disk ' Filtype = ".pdf" ' Filnavn = "salgstal" Set mailThis = CreateItem(olMailItem) Email = "user@domæne.dk" Subj = "Test"
Public Function PrinttoPDF() As String Dim objDistiller As Object Dim strADB_FileName As String Dim strPSFileName As String Dim strFileName As String Dim logFileName As String
Set objDistiller = CreateObject("Pdfdistiller.PdfDistiller")
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.