Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel-Email versenden über excelinterne Verteilerlisten
#1
Hallo zusammen,
habe hier eine Frage:
Ich habe vor unterschiedliche Abteilungen über einen Verteiler jeweils per Button zu versenden.
Da sich die Verteiler unterschiedlich zusammensetzen und es keine entspr. Verteiler in Outlook gibt, die gepflegt werden,
habe ich mir ein Blatt mit mehreren Abteilungen erstellt.
In diesem Fall (s.unten) soll die Mail an alle Abteilungen gehen.
Für die Abteilungen habe ich jeweils die aufgeführten Spalten verwendet, in denen die entsprechende E-Mail-Adresse steht
Leider funktioniert das ganze nicht.
Es klappt leider immernur wenn ich eine Mailadresse händisch hinter .to eingebe.
Kann mir hier jemand weiterhelfen?



Code:
Sub Bereichsdefinition()

Dim PP10 As Range

Dim PP12 As Range

Dim PP13 As Range

Dim PP14 As Range

Dim PP45 As Range

Dim PP46 As Range

Dim PP47 As Range

Dim PP53 As Range

Dim PP61 As Range

Dim PP62 As Range

Dim myMultiAreaRange_Gesamt As Range

Worksheets("E-Mail-Verteilerlisten").Activate

Set PP10 = Range("B3:B40")

Set PP12 = Range("D3:D40")

Set PP13 = Range("F3:F40")

Set PP14 = Range("H3:H40")

Set PP45 = Range("J3:J40")

Set PP46 = Range("L3:L40")

Set PP47 = Range("N3:N40")

Set PP53 = Range("P3:P40")

Set PP61 = Range("R3:R40")

Set PP62 = Range("T3:T40")

Set myMultiAreaRange_Gesamt = Union(PP10, PP12, PP13, PP14, PP45, PP46, PP47, PP53, PP61, PP62)

myMultiAreaRange.Select



End Sub



Sub Mail_workbook_Outlook_Gesamt()

'Die letzte gespeicherte Version wird verschickt

 Dim OutApp As Object

 Dim OutMail As Object

 Set OutApp = CreateObject("Outlook.Application")

 Set OutMail = OutApp.CreateItem(0)

 On Error Resume Next

 With OutMail

 .to = "myMultiAreaRange_Gesamt"  '.Text und .Value funktionieren nicht

 .CC = ""

 .BCC = ""

 .Subject = "Änderung Datei"

 .Body = "Anbei die geänderte Datei"

 .Attachments.Add ActiveWorkbook.FullName

 .Send  'oder nutze .Display

 End With

 On Error GoTo 0

 Set OutMail = Nothing

 Set OutApp = Nothing

End Sub
Danke für Eure Hilfe.
Antworten Top
#2
Hallo

ich habe mich nie mit Outlook beschäftigt, ein Fall für die echten Profis. Mir fällt aber etwas auf:
.to = "myMultiAreaRange_Gesamt"  '.Text und .Value funktionieren nicht

hier wurde der Range Bereich "myMulti..." in "" angegeben.  Das könnte Excel als Text verstehen, anstatt Variable.
Was passiert wenn man das ganze ohne "" angibt??  Einfach mal ausprobieren....

Ansonsten würde ich es über eine For Next Schleife versuchen, mit Einzel Variablen probieren, statt gesamt Variable.
Vielliecht hat ein anderer Ratgeber noch eine gute Idee dazu. Ist nicht mein Fachgebiet.

mfg Gast 123
Antworten Top
#3
Danke für deine Antwort

Also ich hatte das ganze auch schon ohne "" probiert.  :19:
Noch dazu auch als .text bzw .value angegeben. => kein Erfolg
Als Einzelvariablen verstehst du, jeden Rangebereich anzugeben? Funktionierte leider auch nicht  :22:
Leider bekomme ich auch keinen Fehler angezeigt. Das ganze wird gestartet, wenn ich meinen button drücke, aber es funktioniert eben nicht.

Nur wenn ich Mailadressen händisch hinter .to eingebe läuft alles, wie es soll.
Antworten Top
#4
Hi,
du hast ja 2 unabhängige Makros. Im 1. erzeugst du den Multurange als Variable. Dann endet dein Makro 1.
Daher hat du im 2. Makro keinen Wert für den Adressrange. Ich würde eine Variable in eine Zelle schreiben lassen und deren Wert dann im 2. Makro auslesen und verwenden.
Mit freundlichen Grüßen  :)
Michael
Antworten Top
#5
Hi,
verstehe ich jetzt irgendwie nicht.
Ich brauche doch die Variable, weil sich die im Verteilerbereich eingegebenen Mailadressen ändern können und daher nur der Bereich fixiert sein soll, in dem diese stehen?
Antworten Top
#6
Hi,
jetzt am PC gehts mit dem schreiben leichter.

Schau dir mal hier die Erklärungen zu Variablen an. https://de.wikibooks.org/wiki/VBA_in_Exc...Konstanten

Du hast im Makro Bereichsdefinition den Inhalt der Variablen myMultiAreaRange_Gesamt festgelegt. Dann ist mit dem makro ende. Wo bleibt denn dann die Variable, Makro ist ja fertig?

Die einfachste Option ist den Wert der Var in eine Zelle einzutragen und dann im Makro Mail_workbook_Outlook_Gesamt auf diesen Wert zuzugreifen.
Code:
Range("CC1").Value = Union(PP10, PP12, PP13, PP14, PP45, PP46, PP47, PP53, PP61, PP62)

Code:
With OutMail

.to = Worksheets("E-Mail-Verteilerlisten").Range("CC1") '.Text und .Value funktionieren nicht  an deine Verhältnisse anpassen

Mußt du mal testen, ob es so funktioniert. Am Ende des Mailcodes würde ich den Inhalt von CC1 löschen
Mit freundlichen Grüßen  :)
Michael
Antworten Top
#7
Hallo Kali

@ Hallo Zwergel, du warst sehr aufmerksam, das es zwei getrennte Makors sind ist mir garnicht aufgefallen.  
    dann ist natürlich der Gesamtwert Null, weil die gesamt Variable innerhaib von Sub deklariert wurde! 

in dem Falle bitte zumindest die gesamt Variable und alles was dem 2. Makro übergeben wird mit Public als öffentliche Variable  deklarieren. Dazu muss sie ganz oben, vor derm 1. Sub stehen! Dann könnte es evtll klappen. Würde mich freuen. Rückmeldung waere nett.

Public myMultiAreaRange_Gesamt As Range

Sub Makro1 + Makro 2
Antworten Top
#8
Hi,

wenn als Public, was nach Wiki nicht so optimal sein soll, Nachteile kenne ich jedoch keine, am Ende von Makro 2 den Inhalt der Variablen löschen.
Mit freundlichen Grüßen  :)
Michael
Antworten Top
#9
Vielen Dank!
Jetzt verstehe ich, was ihr meint.
Da habt ihr natürlich Recht  :19:

Muss es morgen ausprobieren, habe auf dem Rechner hier jetzt kein Outlook.
Antworten Top
#10
Sorry für den doublepost, leider kann ich den vorherigen Beitrag nicht editieren.

Update:
Code:
Public myMultiAreaRange_Gesamt


funktioniert leider nicht; auch wenn ich die einzelnen Abteilungen, die via range definiert werden zusätzlich public setze.

Bin halt auch kein Profi, wie denke ich nicht schwer zu erkennen ist

@Zwergel
 
Code:
Set Range("CC1").Value = Union(PP etc...)
funktioniert auch nicht, wenn ich dann wieder über  
 
Code:
With OutMail
       .to = Worksheets("E-Mail-Verteilerlisten").Range("CC1")
zugreife.
 Es dürfte ja keine Rolle spielen, dass viele Zellen noch leer sind oder?
 





Wie genau ist das mit der For Next schleife  gemeint?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste