Avatar billede birdbrain Seniormester
25. august 2020 - 14:42 Der er 17 kommentarer og
1 løsning

ændre afsender postkasse

Her er et lille udpluk fra en længere kode jeg har haft megen gavn af, men nu vil jeg gerne høre om der findes en kode for afsender (From) der kan sættes ind i nedenstående. Jeg har adgang til flere servicepostkasser ud over min personlige, og så ville det løse en arbejdsgang, hvis man, via en henvisning til en celle, få åbnet mailen med den ønskede "afsenderpostkasse".

With OutlookMail
.To = "email address" 'can instead be linked to a cell in the excel sheet
.CC = ""
.BCC = ""
.Subject = "Cost status report - " & ActiveWorkbook.Worksheets("Dev Report").Range("D5") & " - " & ActiveWorkbook.Worksheets("Dev Report").Range("D4") & " - " & ActiveWorkbook.Worksheets("Dev Report").Range("R4")
.body = "Hi" & Chr(10) & Chr(10) & "Please find attached cost status report for " & ActiveWorkbook.Worksheets("Dev Report TEST").Range("D4") & " at end of " & ActiveWorkbook.Worksheets("Dev Report TEST").Range("R4") & Chr(10) & Signature
.Attachments.Add TempFileName
Avatar billede ebea Ekspert
25. august 2020 - 15:50 #1
Et skud, ud fra din manglende, resterende del af koden.
Længere oppe i din kode, hvor du har defineret din Outlook (Set), kan du prøve at tilføje denne kodelinje, under de linjer.

Set OutAccount = OutApp.Session.Accounts.Range("A1").Value

Hvor du kan opsætte en DropDown liste med dine postkasser (A1) i eks.
Avatar billede birdbrain Seniormester
26. august 2020 - 07:26 #2
Nu er jeg heller ikke nogen ørn til vba, og syntes ikke lige jeg kan få det til at virke med dit forslag. Her er den fulde kode, som du efterlyste.
Sub Mad_bestilling()

Sheets("Mad").Select

Dim DataSti As String
Dim Filnavn As String
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
Dim OutlookPrg As Object
Dim OutlookMail As Object
Dim cpr As String

With ActiveSheet
        navn = .Range("k4")
        modtager = .Range("k2")
        tlf = .Range("k3")
        cpr = .Range("K6").Text
    End With


Set OutlookPrg = CreateObject("Outlook.Application")
Set OutlookMail = OutlookPrg.CreateItem(0)

DataSti = objFolders("desktop") & Application.PathSeparator
Filnavn = ActiveSheet.Name & "..." & cpr & ".pdf"

ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:=DataSti & Filnavn, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

On Error Resume Next
With OutlookMail
    .To = modtager
    .CC = ""
    .BCC = ""
    .Subject = navn & " . " & "Orientering om bestilling af mad.”
    .Body = "Hermed fremsendes madbestilling" & vbCrLf & vbCrLf & "Med venlig hilsen" & vbCrLf & navn & vbCrLf & "tlf  " & tlf
    .Attachments.Add (DataSti & Filnavn)
    .Display
End With
On Error GoTo 0

Kill (DataSti & Filnavn)

Set OutlookMail = Nothing
Set OutlookPrg = Nothing
Set objFolders = Nothing
     
Sheets("Mad").Select
    Range("P16:p31,P34:p45").Select
    Range("P34").Activate
    Selection.ClearContents
    Range("P16").Select


End Sub
Avatar billede birdbrain Seniormester
27. august 2020 - 07:53 #4
Må erkende at mit (manglende) kendskab til VBA, gør at jeg ikke selv er i stand til at tilrette min "kode" med forslaget...……………………. nogen forslag :-)
Avatar billede ebea Ekspert
27. august 2020 - 08:09 #5
Den kodestump jeg henviste til i #1, vil ikke virke i den opsætning du har på din mail funktion.
Men da du bruger funktionen  .Display i koden, til at vise mailen inden den sendes, ville det også være nemmere for dig, og også spare taste klik, end ved at placere en funktion i koden, når du ved blot at klikke 1 gang på de valg du har i den viste mail, kan vælge afsender på mailen.
Dette gøres ved at klikke på Pilen, til venstre for modtager linjen!

De afsendere du har, er jo defineret i Outloook (som er dit mail program) i forvejen, så du vil få en oversigt over disse, når du klikker på Pilen.
Avatar billede birdbrain Seniormester
27. august 2020 - 08:52 #6
Havde bare håbet der var en løsning ( ikke for kompliceret :-)), da skemaet bruges på flere Matrikler, hvorfor afsender, navn og tlf) vil fremkomme i en celle via opslag ud fra den enkelte matrikel.
Ved ikke om dette giver mening.
Avatar billede ebea Ekspert
27. august 2020 - 09:08 #7
#6 - Nej, det gir' ikke rigtig mening ;-)
Når du skriver  Matrikler, går jeg ud fra, at det er flere forskellige brugere. Og da disse bruger samme kode, vil de også bruge den afsender som de nu er (Den mail opsætning de har i deres mail program).

Og opslaget du henviser til går jeg ud fra, er det som er vist i din kode (K2, K3, K4 og K6). Men det er jo kun en tekst som indsættes, og ikke afsenderen af emailen!
Avatar billede birdbrain Seniormester
27. august 2020 - 10:38 #8
Der er også forskellige modtagere, alt efter matrikel, "K2"  er modtager mail, igen ud fra hvilken matrikel skemaet bruges.
Avatar billede ebea Ekspert
27. august 2020 - 11:37 #9
#8 - Jeg forstår ikke helt dine forklaringer!
Prøv med denne kode, som henter en mail adresse, og kan baseres på en DropDown liste, og værdien i A1.

Sub Mad_bestilling()
Sheets("Mad").Select

Dim DataSti As String
Dim Filnavn As String
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
Dim OutlookPrg As Object
Dim OutlookMail As Object
Dim cpr As String
Dim emailRng As Range, cl As Range

Set emailRng = Worksheets("Mad").Range("A1")
For Each cl In emailRng
        mTo = mTo & ";" & cl.Value
    Next

    mTo = Mid(mTo, 2)

With ActiveSheet
        navn = .Range("k4")
        modtager = .Range("k2")
        tlf = .Range("k3")
        cpr = .Range("K6").Text
    End With

Set OutlookPrg = CreateObject("Outlook.Application")
Set OutlookMail = OutlookPrg.CreateItem(0)

DataSti = objFolders("desktop") & Application.PathSeparator
Filnavn = ActiveSheet.Name & "..." & cpr & ".pdf"

ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=DataSti & Filnavn, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
   
   

On Error Resume Next
    With OutlookMail

    .To = mTo  'modtager
    .CC = ""
    .BCC = ""
    .Subject = navn & " . " & "Orientering om bestilling af mad.”"
    .Body = "Hermed fremsendes madbestilling" & vbCrLf & vbCrLf & "Med venlig hilsen" & vbCrLf & navn & vbCrLf & "tlf  " & tlf
    .Attachments.Add (DataSti & Filnavn)
    .Display
End With
On Error GoTo 0

Kill (DataSti & Filnavn)

Set OutlookMail = Nothing
Set OutlookPrg = Nothing
Set objFolders = Nothing
   
Sheets("Mad").Select
    Range("P16:p31,P34:p45").Select
    Range("P34").Activate
    Selection.ClearContents
    Range("P16").Select

End Sub
Avatar billede Jan K Ekspert
27. august 2020 - 12:13 #10
Måske misforstår jeg OP, men som jeg læser det, er ønsket at der kan indsættes en slags:

.FROM  i lihed med .TO, .CC, .BB osv., men OutlookMail objektet har så vidt jeg ved ikke  en FROM egenskab.
Avatar billede birdbrain Seniormester
27. august 2020 - 12:39 #11
Denne løsning er vist den samme som oprindelig, havde fået den til at indsætte modtagermail adressen, det var bare hvis det også var muligt, indsætte afsender mail adressen via f eks, eller hvordan det nu kan gøres :-)

With ActiveSheet
        navn = .Range("k4")
        modtager = .Range("k2")
        tlf = .Range("k3")
        cpr = .Range("K6").Text
      afsender =.Range("K8")
End With

'Og dermed
With OutlookMail

    .From = afsender
    .To = modtager
    .CC = ""
    .BCC = ""
    .Subject = navn & " . " & "Orientering om bestilling af mad.”"
    .Body = "Hermed fremsendes madbestilling" & vbCrLf & vbCrLf & "Med venlig hilsen" & vbCrLf & navn & vbCrLf & "tlf  " & tlf
    .Attachments.Add (DataSti & Filnavn)
    .Display
End With
Avatar billede ebea Ekspert
27. august 2020 - 12:40 #12
#10 - Ja, jeg kan heller ikke selv, blive helt klar på, hvad det er der!
Nej en .FROM findes ikke. Men FROM er jo afsenderen på emailen, altså post adressen. Så jeg må gå ud fra, at det er dette ;-)
Avatar billede ebea Ekspert
27. august 2020 - 12:45 #13
#11 - Og hvor tænker du så, at den afsender skulle placeres i mailen?
Afsenderen er jo i Oulook, placeret i linjen øverst i mailen som modtages. Så jeg kan ikke rigtig se, hvor du vil placere endnu en!
Avatar billede birdbrain Seniormester
27. august 2020 - 12:51 #14
afsender = afsenderpostkassen, som du nævnte #5
"De afsendere du har, er jo defineret i Outloook (som er dit mail program) i forvejen, så du vil få en oversigt over disse, når du klikker på Pilen. "

Jeg er lidt "excel-retarderet" og ved ikke om dette giver mening :-)
Avatar billede Jan K Ekspert
27. august 2020 - 14:03 #15
#12 I Outlook kan du ændre afsenderadressen, så den ikke nødvendigvis er den samme, som den mailkonto, du er logget på.
Avatar billede birdbrain Seniormester
27. august 2020 - 14:23 #16
Grunden til at jeg gerne ville have at den automatisk genererede mail skulle kunne åbnes med en "afsendermailadresse", er også at dem der kommer til at bruge skemaet har en fælles postkasse (servicepostkasse) på hver enkel matrikel, således, det ikke er den enkelte person der modtager en evt svarmail, men den gruppe der nu er tilknyttet.
Men tænker efterhånden jeg bruger den oprindelige kode, og må så præcisere for "brugerne", at de skal vælge den fælles postkasse som afsender.
Avatar billede ebea Ekspert
27. august 2020 - 14:34 #17
#15 - Det er også det jeg refererede til i #5. Når du ikke er på noget Online, er du jo pr. definition på den mail konto, du har valgt som standard i Outlook.
Avatar billede ebea Ekspert
27. august 2020 - 14:37 #18
#16 - Kan du så ikke lave det i Subject feltet, ved at hente navnet fra f.eks. K8 som du foreslår. Så vil det fremgå i overskriften på mailen!
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

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