Avatar billede splokit Nybegynder
07. september 2006 - 17:16 Der er 7 kommentarer og
1 løsning

VB Lav mail med vedhæfted filer

Hey jeg har prøver at få en vb kode til også at vedhæfte filer men uden held

er der nogle som kan hjælpe med det!?

fil navnene kommer fra cellerne + en fast text og .pdf
og et fast dir.

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long


Sub SendEMail()
    Dim Email As String, Subj As String
    Dim Msg As String, URL As String
    Dim r As Integer, x As Double
    Dim Vedhæft_1a As String
    Dim Vedhæft_2a As String
    Dim Vedhæft_3a As String
    Dim Vedhæft_1b As String
    Dim Vedhæft_2b As String
    Dim Vedhæft_3b As String
    Dim Dir As String
    Set olNewMail = CreateItem(olMailItem)
   
    Dir = "G:/test/"
   
    'Kun hvis celler = talværdi
    Vedhæft_1a = Dir & Cells(r, 4) & "KL.pdf"
    Vedhæft_1b = Dir & Cells(r, 4) & "KV.pdf"
    Vedhæft_2a = Dir & Cells(r, 10) & "Kl.pdf"
    Vedhæft_2b = Dir & Cells(r, 10) & "KV.pdf"
    Vedhæft_3a = Dir & Cells(r, 16) & "KL.pdf"
    Vedhæft_3b = Dir & Cells(r, 16) & "KV.pdf"
   
    For r = 2 To 25 'data in rows 2-4
Rem Get the email address
        Email = Cells(r, 21)
       
        If Cells(r, 21) <> "" Then
            bygMail r
        End If
    Next r
End Sub
Private Sub bygMail(r)

        Email = Cells(r, 21)
'      Message subject Format(Cells(r, 2), "hh:mm:ss")
        Subj = "" & "" & Cells(r, 4) & ", " & Cells(r, 10) & "" & Cells(r, 16) & "" & Format(Now() + 1, "dddd dd mmmm yyyy") & "" & Format(Now(), "dddd mmmm yy hh:mm")
       
       

'      Compose the message
        If (Cells(r, 1)) <> "" Then
        Msg = Msg & "" & Format(Cells(r, 1), "hh:mm") & vbCrLf & vbCrLf
        End If
       
        If (Cells(r, 4)) = "A" Then
        Msg = Msg & "A" & vbCrLf
        ElseIf (Cells(r, 4)) = "B" Then
        Msg = Msg & "B" & vbCrLf
        ElseIf (Cells(r, 4)) = "C" Then
        Msg = Msg & "C" & vbCrLf
        ElseIf (Cells(r, 4)) > 0 Then
        Msg = Msg & "Tal" & vbCrLf
        .Attachments.Add Vedhæft_1a & Vedhæft_1b
        End If
       
        If (Cells(r, 10)) = "A" Then
        Msg = Msg & "A" & vbCrLf
        ElseIf (Cells(r, 10)) = "B" Then
        Msg = Msg & "B" & vbCrLf
        ElseIf (Cells(r, 10)) = "C" Then
        Msg = Msg & "C" & vbCrLf
        ElseIf (Cells(r, 10)) > 0 Then
        Msg = Msg & "Tal" & vbCrLf
        .Attachments.Add Vedhæft_2a & Vedhæft_2b
        End If
       
        If (Cells(r, 16)) = "A" Then
        Msg = Msg & "A" & vbCrLf
        ElseIf (Cells(r, 16)) = "B" Then
        Msg = Msg & "B" & vbCrLf
        ElseIf (Cells(r, 16)) = "C" Then
        Msg = Msg & "C" & vbCrLf
        ElseIf (Cells(r, 16)) > 0 Then
        Msg = Msg & "Tal" & vbCrLf
        .Attachments.Add Vedhæft_3a & Vedhæft_3b
        End If


'      Replace spaces with %20 (hex)
        Subj = Application.WorksheetFunction.Substitute(Subj, " ", "%20")
        Msg = Application.WorksheetFunction.Substitute(Msg, " ", "%20")
               
'      Replace carriage returns with %0D%0A (hex)
        Msg = Application.WorksheetFunction.Substitute(Msg, vbCrLf, "%0D%0A")
'      Create the URL
        URL = "mailto:" & Email & "?subject=" & Subj & "&body=" & Msg
       
'      Execute the URL (start the email client)
        ShellExecute 0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus

'      Wait two seconds before sending keystrokes
'        Application.Wait (Now + TimeValue("0:00:02"))
'        Application.SendKeys "%s"
       
   

   
End Sub
Avatar billede kabbak Professor
07. september 2006 - 19:02 #1
Et par ting:


Sub SendEMail()
    Dim Email As String, Subj As String
    Dim Msg As String, URL As String
    Dim r As Integer, x As Double
    Dim Vedhæft_1a As String
    Dim Vedhæft_2a As String
    Dim Vedhæft_3a As String
    Dim Vedhæft_1b As String
    Dim Vedhæft_2b As String
    Dim Vedhæft_3b As String
    Dim Dir As String ' Dir er et reseveret udtryk i VisualBasic, det bør ikke bruges som en variant.
    Set olNewMail = CreateItem(olMailItem)
   
    Dir = "G:/test/"' Dir er et reseveret udtryk i VisualBasic, det bør ikke bruges som en variant.

    ' Gælder nedenstående, r for ikke tildelt en værdi, hvilke celler skal den kikke i
    'Kun hvis celler = talværdi
    Vedhæft_1a = Dir & Cells(r, 4) & "KL.pdf"
    Vedhæft_1b = Dir & Cells(r, 4) & "KV.pdf"
    Vedhæft_2a = Dir & Cells(r, 10) & "Kl.pdf"
    Vedhæft_2b = Dir & Cells(r, 10) & "KV.pdf"
    Vedhæft_3a = Dir & Cells(r, 16) & "KL.pdf"
    Vedhæft_3b = Dir & Cells(r, 16) & "KV.pdf"
Avatar billede kabbak Professor
07. september 2006 - 19:23 #2
det vil være nemmere at læse koden, hvis du brugte

Select Case (Cells(r, 4))
    Case Is = "A"
        Msg = Msg & "A" & vbCrLf
    Case Is = "B"
        Msg = Msg & "B" & vbCrLf
    Case Is = "C"
        Msg = Msg & "C" & vbCrLf
    Case Is > 0
        Msg = Msg & "Tal" & vbCrLf
        olNewMail.Attachments.Add Vedhæft_1a & Vedhæft_1b
    End Select

i stedet for

If (Cells(r, 4)) = "A" Then
        Msg = Msg & "A" & vbCrLf
        ElseIf (Cells(r, 4)) = "B" Then
        Msg = Msg & "B" & vbCrLf
        ElseIf (Cells(r, 4)) = "C" Then
        Msg = Msg & "C" & vbCrLf
        ElseIf (Cells(r, 4)) > 0 Then
        Msg = Msg & "Tal" & vbCrLf
        .Attachments.Add Vedhæft_1a & Vedhæft_1b
        End If
Avatar billede splokit Nybegynder
07. september 2006 - 23:20 #3
i hver kolonne i "V2:AA26" ville jeg have en formel =Sammenkædning("g:/text/";$D2;"KL.pdf").
det ville give mig problemer for man skal kunne rykke runde på den data i "A2:T26" kulonne "U" er en kode til at hente mail adresser fra kolonne "B"

Hvordan få jeg den til at have et fast "dir" hvor den skal hente filerne fra og del vis celleværdi og fast tekst, som fil navn.

r er for række nr. så den for hver række som har værdi "mail add" i "U" skal den lave en mail med de værdier på rækken og de tal der er i "D:J:P" skulle den vedhæfte de filer som er i "G:/test/"
Avatar billede kabbak Professor
07. september 2006 - 23:32 #4
Det er ok, som du gør det, men du må ikke kalde den Dir, du kan kalde den

Dim strDir As String

eller lignende, man bruger ikke de reseverede navne til variabler

i din nederste kode skriver du også
.Attachments.Add Vedhæft_1a & Vedhæft_1b
men den kender ikke objektet som skal stå foran  punktummet, det kendes kun i den øverste makro.
Avatar billede splokit Nybegynder
08. september 2006 - 09:53 #5
Skal bygMail så også have Dim med!?
Avatar billede sjokoman Juniormester
10. september 2006 - 22:37 #6
Hej SPLOKIT, du har de samme problemer som jeg, vi "udfører" samme job fra samme kunde, Hvis du får en løsning, eller jeg gør, kan vi så udveksle den løsning en af os finder?
Min mail johnnymadsen@email.dk hvis du har mod på dette.
Avatar billede splokit Nybegynder
11. september 2006 - 07:27 #7
sjokoman det er bare i orden.
Avatar billede splokit Nybegynder
22. september 2006 - 14:52 #8
humm
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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