Avatar billede sjokoman Juniormester
10. september 2006 - 22:14 Der er 17 kommentarer og
2 løsninger

email emne fra forskellige celler automatisk

Jeg taster data ind i 4 celler. Jeg vil have indeholdet til at stå i emnet på en email, jeg skal sende med to vedhæftede filer. Jeg har flere modtagere af email, som alle for forskellige data i de 4 celler. Måske er det ikke en regnearksopgave, men jeg skal jo starte et sted :-)
Avatar billede gider_ikke_mere Nybegynder
10. september 2006 - 23:14 #1
Måske du lige kan forklare lidt nærmere om formålet. Vil du sende mail fra Excel med vedhæftede filer? Hvor meget tekst kommer der til at stå i emne?
Avatar billede sjokoman Juniormester
11. september 2006 - 09:37 #2
Hej akyhne,der er et andet sprørgsmål et par dage siden med nøjagtig de sammefiler etc. som jeg efterlyser. Men hvordan sender jeg en fil medtil eksperten?
mvh Johnny
Avatar billede gider_ikke_mere Nybegynder
11. september 2006 - 12:32 #3
Du kan ikke uploade filer til eksperten.dk. Link til dit andet spm?
Avatar billede sjokoman Juniormester
11. september 2006 - 12:50 #4
her er et link
http://www.eksperten.dk/spm/730971

men emnet (komma mellem hver celle) abc1, 10:00, rødovre, 18:00, vallensbæk strand,
Når dette er tastet ind skal det sendes en email til en modtager med to vedhæftede pdf-filer.

Der vil være mange linier i arket (hvor emnet er som ovenstående) med mange forskellige modtagere.

mvh Johnny
Avatar billede splokit Nybegynder
12. september 2006 - 13:52 #5
Det vi skal bruge er en kode til at vedhæfte filer ud fra en celle værdi.
koden skal bygges i denne kode her og ud fra en bestemt celle skal den vedhæfte en fil med navn som værdien fra cellen.

End Sub
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
   
    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
        Msg = "" & Cells(r, 2) & vbCrLf
       
        If (Cells(r, 1)) <> "" Then
        Msg = Msg & vbCrLf & vbCrLf
        End If
       
        Select Case (Cells(r, 4))
    Case Is = "A"
        Msg = Msg & vbCrLf
    Case Is = "B"
        Msg = Msg & vbCrLf
    Case Is = "C"
        Msg = Msg & vbCrLf
    Case Is = "D"
        Msg = Msg & vbCrLf
    Case Is > 0
        Msg = Msg & vbCrLf 'Vedhæft fil her
    End Select

        Select Case (Cells(r, 10))
    Case Is = "A"
        Msg = Msg & vbCrLf
    Case Is = "B"
        Msg = Msg & vbCrLf
    Case Is = "C"
        Msg = Msg & vbCrLf
    Case Is > 0
        Msg = Msg & vbCrLf 'Vedhæft fil her
    End Select
     
        Select Case (Cells(r, 16))
    Case Is = "A"
        Msg = Msg & vbCrLf
    Case Is = "B"
        Msg = Msg & vbCrLf
    Case Is = "C"
        Msg = Msg & vbCrLf
    Case Is > 0
        Msg = Msg & vbCrLf 'Vedhæft fil her
    End Select
               
        Msg = Msg & "" & vbCrLf
        Msg = Msg & "" & vbCrLf & vbCrLf & vbCrLf
       
        Msg = Msg & "" & vbCrLf
        Msg = Msg & "" & vbCrLf & vbCrLf
        Msg = Msg & "" & vbCrLf
        Msg = Msg & "" & vbCrLf & vbCrLf
        Msg = Msg & ""
'      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 splokit Nybegynder
12. september 2006 - 14:00 #6
Det er noget med
.Attachments.Add "c:\" & Cells(r, 4) & ".pdf"

Men kan ikke selv finde ud af hvordan det skal sættes sammen
Avatar billede sjokoman Juniormester
12. september 2006 - 15:10 #7
Hej Splokit, VB er langt over min formåen, jeg låner lidt på biblo eller køber en bog, jeg har set anbefalet her på eksperten og så vender jeg tilbage. Men jeg ved ikke hvor hurtigt jeg kan fatte det, men foreløbig tak :-)

mvh Johnny
Avatar billede gider_ikke_mere Nybegynder
12. september 2006 - 16:45 #8
Denne tager mailadresser i cellerne B1-B4 og mailer (lægges i "Klader" i Outlook). Subject, altså overskriften, tages fra A1-A4, med komma imellem. Den vedhæfter 2 .txt-filer. jeg har ikke lavet kontrol i koden, for om de er der!

For at det virker, skal I i VBA-editoren gå i "Tools", "References", og tilføje "Microsoft Outlook 11 Object Library". Kan også være "Microsoft Outlook 10 Object Library". Det afh;nger af Jeres version. Dette skal gøres på alle maskiner, hvor det skal virke. Ved ikke hvordan man kan lave kontrol for dette.

Skal det tilpasses, kan I bare spørge!


Private Sub CommandButton3_Click()
Dim I
Dim Besked As String

MailAdrr = Range("B1:B4")
For I = 1 To UBound(MailAdrr)
    If MailAdrr(I, 1) Like "*@*" Then
        GoSub SendEnMail
    End If
Next

Exit Sub
SendEnMail:
    Besked = Cells(1, 1).Text & ", " & Cells(2, 1).Text & ", " & Cells(3, 1).Text & ", " & Cells(4, 1).Text

    Dim ObjOutlook As Outlook.Application
    Dim ObjOutLookMsg As Outlook.MailItem
    Dim ObjOutLookRecip As Outlook.Recipient
   
    Set ObjOutlook = CreateObject("Outlook.Application")
    Set ObjOutLookMsg = ObjOutlook.CreateItem(olMailItem)

    Dim strFilSti As String
    strFilSti = "C:/test.txt"
    strFilSti2 = "C:/test2.txt"
   
    ObjOutLookMsg.Save
   
    With ObjOutLookMsg
        Set ObjOutLookRecip = .Recipients.Add(MailAdrr(I, 1))
        ObjOutLookRecip.Type = olTo
        .Subject = Besked
        .Body = "Og teksten i mailen"
        .Attachments.Add strFilSti
        .Attachments.Add strFilSti2
        .Save
        '.Send 'Fjern det første ' hvis mailen skal sendes
    End With
   
    Set ObjOutlook = Nothing
Return
End Sub
Avatar billede gider_ikke_mere Nybegynder
12. september 2006 - 19:30 #9
En udgave med filcheck:

Private Sub CommandButton3_Click()
Dim I
Dim Besked As String, Fil1 As String, Fil2 As String
Fil1 = "c:\test1.txt"
Fil2 = "c:\test2.txt"
If Dir(Fil1) = "" Or Dir(Fil1) = "" Then
    MsgBox "En af filerne mangler!"
    Exit Sub
End If
MailAdrr = Range("B1:B4")
For I = 1 To UBound(MailAdrr)
    If MailAdrr(I, 1) Like "*@*" Then
        GoSub SendEnMail
    End If
Next

Exit Sub
SendEnMail:
    Besked = Cells(1, 1).Text & ", " & Cells(2, 1).Text & ", " & Cells(3, 1).Text & ", " & Cells(4, 1).Text

    Dim ObjOutlook As Outlook.Application
    Dim ObjOutLookMsg As Outlook.MailItem
    Dim ObjOutLookRecip As Outlook.Recipient
   
    Set ObjOutlook = CreateObject("Outlook.Application")
    Set ObjOutLookMsg = ObjOutlook.CreateItem(olMailItem)

    ObjOutLookMsg.Save
   
    With ObjOutLookMsg
        Set ObjOutLookRecip = .Recipients.Add(MailAdrr(I, 1))
        ObjOutLookRecip.Type = olTo
        .Subject = Besked
        .Body = "Og teksten i mailen"
        .Attachments.Add Fil1
        .Attachments.Add Fil2
        .Save
        '.Send 'Fjern det første ' hvis mailen skal sendes
    End With
   
    Set ObjOutlook = Nothing
Return
End Sub
Avatar billede gider_ikke_mere Nybegynder
13. september 2006 - 20:20 #10
Har du checket koden?
Avatar billede sjokoman Juniormester
13. september 2006 - 20:49 #11
Hej Akyhne, som jeg skrev lidt højere oppe, jeg er slet ikke på niveau til denne hjælp, jeg aner faktisk ikke, hvor jeg skal putte den ind osv, derfor skrev jeg, at jeg vil låne noget materiale som kan hjælpe mig som total novice og så checke den, som jeg kan se, kvalificerede hjælp jeg får. Jeg skal nok vende tilbage, men der går lidt tid, pointene skal selvfølgelig bruges :-)

mvh Johnny
Avatar billede gider_ikke_mere Nybegynder
13. september 2006 - 21:20 #12
Jeg kan nemt guide dig, hvordan du skal bruge koden.
Avatar billede splokit Nybegynder
20. september 2006 - 13:01 #13
Her er den kode lavet om men til den måde du ønsker og er lige til al sy ind til dit behov.

Option Explicit

Sub SendEMail()
  Dim Email As String, Subj As String
  Dim MSG As String, URL As String
  Dim r As Integer, x As Double
 
  For r = 4 To 30  'data in rows 2-4 Rem Get the email address
      Email = Cells(r, 1)
      If Cells(r, 1) <> "" Then
        bygMail r
      End If
  Next 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, Filnavn As String
  Dim x As Long
  Disk = "C:\test\" & Format(Now(), "dddd") & "\"
  ChDir Disk
  Filnavn = ".pdf"

  Set mailThis = CreateItem(olMailItem)
  Email = Cells(r, 22)
  '      Message subject Format(Cells(r, 2), "hh:mm:ss")
  If (Cells(r, 11)) <> "" Then
        Subj = "" & "Fra " & Format(Cells(r, 7), "hh:mm") & " " & Cells(r, 8) & " Til " & Format(Cells(r, 9), "hh:mm") & " " & Cells(r, 10)
  Else
        Subj = "" & "Fra " & Format(Cells(r, 7), "hh:mm") & " " & Cells(r, 8) & " Til " & Format(Cells(r, 9), "hh:mm") & " " & Cells(r, 10) & " Og " & "Fra " & Cells(r, 12) & " " & Cells(r, 13) & " Til " & Cells(r, 14) & " " & Cells(r, 15)
  End If
  '      Compose the message
  Select Case (Cells(r, 6))
      Case 1 To 22
        MSG = MSG & "" & " Fra " & Format(Cells(r, 7), "hh:mm") & " " & Cells(r, 8) & " Til " & Format(Cells(r, 9), "hh:mm") & " " & Cells(r, 10) & vbCrLf
        mailThis.Attachments.Add Disk & Format(Now(), "yyyy") & Format(Now(), "mm") & Format(Now() + 1, "dd") & "dnt-" & Cells(r, 6) & "KV" & Filnavn
        mailThis.Attachments.Add Disk & Format(Now(), "yyyy") & Format(Now(), "mm") & Format(Now() + 1, "dd") & "dnt-" & Cells(r, 6) & "KL" & Filnavn
      Case Else
  End Select
 
  Select Case (Cells(r, 11))
      Case 11 To 35
        MSG = MSG & "" & " Fra " & Format(Cells(r, 12), "hh:mm") & " " & Cells(r, 13) & " Til " & Format(Cells(r, 14), "hh:mm") & " " & Cells(r, 15) & vbCrLf
        mailThis.Attachments.Add Disk & Format(Now(), "yyyy") & Format(Now(), "mm") & Format(Now() + 1, "dd") & "dnt-" & Cells(r, 11) & "KV" & Filnavn
        mailThis.Attachments.Add Disk & Format(Now(), "yyyy") & Format(Now(), "mm") & Format(Now() + 1, "dd") & "dnt-" & Cells(r, 11) & "KL" & Filnavn
      Case Else
  End Select
 
  For x = 1 To 1
        MSG = MSG & "MVH" & Cells(1, 2) & vbCrLf
        MSG = MSG & Cells(5, 17) & vbCrLf
        MSG = MSG & Cells(6, 17) & vbCrLf
        MSG = MSG & Cells(7, 17) & vbCrLf
        MSG = MSG & Cells(8, 17) & vbCrLf
        MSG = MSG & Cells(9, 17) & vbCrLf
        MSG = MSG & Cells(10, 17) & vbCrLf
        MSG = MSG & Cells(12, 17) & vbCrLf
        MSG = MSG & Cells(13, 17) & vbCrLf
        MSG = MSG & Cells(14, 17) & vbCrLf
        MSG = MSG & Cells(15, 17) & vbCrLf
       
If Application.Wait(Now + TimeValue("0:00:02")) Then ' kan fjernes
    MsgBox "Mail til " & Cells(r, 3) & " Klar" ' kan fjernes
End If ' kan fjernes

  Next
  mailThis.Recipients.Add Email
  mailThis.Subject = Subj
  mailThis.Body = MSG
  mailThis.Send 'Send mailen med det samme!!
'  mailThis.Save 'Gem mailen i kladder!!

End Sub
Avatar billede sjokoman Juniormester
21. september 2006 - 09:13 #14
mangler at kunne give point
Avatar billede gider_ikke_mere Nybegynder
30. september 2006 - 22:27 #15
Til hvem?
Avatar billede gider_ikke_mere Nybegynder
31. oktober 2006 - 12:45 #16
Respons. Ved du hvordan du giver point?
Avatar billede splokit Nybegynder
11. november 2006 - 07:05 #17
HAm bruger mit svar...
Avatar billede splokit Nybegynder
11. november 2006 - 07:05 #18
Han
Avatar billede sjokoman Juniormester
11. november 2006 - 07:21 #19
Jeg har brugt splokits opsætning med nogle tilrettelser og det virker, tak også til akyhne,
mvh Johny
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