Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei senden mit variablem Betreff

Datei senden mit variablem Betreff
17.10.2008 15:58:00
Marc
Hallo Leute,
ich habe ein kleines Problem: Mein Excel stellt sich heute ziemlich stur an. Ich habe eine Datei, die ich gern automatisch per Mail verschicken möchte.
Dafür habe ich folgendes Makro geschrieben:

Sub DateiSenden()
Dim subject As String
Dim number As String
number = Range("J8")
subject = "XX_" & number
ActiveWorkbook.SendMail Recipients:="Name@Domain.de", Subject:=subject
End Sub


In der Zelle J8 steht eine Zahl drin, die in den Betreff übernommen werden soll. Der Betreff sollte also z. B. "XX_4711" lauten. Leider kommt in der Betreffzeile aber nur "XX_" an. Die Variable wird einfach verschluckt. Was mache ich falsch?
Abgesehen davon habe ich hier im Forum schon gelesen, dass man die Warnmeldung von Outlook, dass eine Applikation versucht eine Mail zu senden und ob man damit einverstanden wäre, nicht unterdrückt werden kann. Gibt es denn eine andere Möglichkeit diese Meldung verschwinden zu lassen? Kann man das Makro nicht irgendwie auf den "Ja-Button" klicken lassen? Oder gibt es noch andere Möglichkeiten, die man selbst schreiben kann? Ich habe gesehen, das es ein Programm gibt, das automatisch auf "Ja" klickt. Aber das kommt hier leider nicht in Frage. Das muss anders gehen.
Ich freue mich schon auf eure Antworten und bedanke mich für eure Hilfe.
Herzliche Grüße,
Marc

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei senden mit variablem Betreff
17.10.2008 16:05:00
Hoffi
Hallo,
versuchs mal so:

Sub DateiSenden()
Dim subject As String
Dim number As String
number = Range("J8").Value
subject = "XX_" & number
ActiveWorkbook.SendMail Recipients:="Name@Domain.de", Subject:=subject
End Sub


es gibt ein Tool das dies übernehmen kann, nennt sich security_outlook. Musste mal die Jungs von Google fragen.
Grüße
Hoffi

AW: Datei senden mit variablem Betreff
17.10.2008 16:15:00
Marc
Hallo Hoffi,
vielen Dank für den Vorschlag, aber mit .value habe ich es auch schon probiert. Hat leider nicht geholfen.
Trotzdem vielen Dank für den Tip!
Grüße,
Marc
Anzeige
AW: Datei senden mit variablem Betreff
17.10.2008 16:17:23
Heinz
Hi,
number = Range("J8").Text
mfg Heinz
AW: Datei senden mit variablem Betreff
17.10.2008 16:20:00
Marc
Hallo Heinz,
funktioniert leider auch nicht.
Trotzdem danke!
Grüße,
Marc
AW: Datei senden mit variablem Betreff
17.10.2008 16:24:03
Heinz
Hi,
kann doch gar nicht sein, es sei denn, deine Mappe hat ne Macke,
lad mal hoch.
mfg Heinz
AW: Datei senden mit variablem Betreff
17.10.2008 16:37:15
Marc
Hallo Heinz,
hast recht. Ich habe es an einer anderen Mappe probiert und meinen Fehler erkannt. Aber lustigerweise funktioniert aus irgendeinem Grund die Zeile mit der Sendmail Anweisung nicht mehr. Habe ich da noch einen Fehler drin?
Grüße,
Marc
AW: Datei senden mit CDO
17.10.2008 16:46:00
Richard


Hallo Marc,
hier einmal folgender Code um E-Mails ohne Outlook zu senden.
So verhinderst du die lästige "Ja"-Schaltfläche von Outlook! Aber du solltet wissen, dass eine Mail auf diese weise auch nicht in den gesendeten Objekten unter Outlook wiederzufinden ist.


Option Explicit
Sub EMail_per_CDO_senden()
Dim iNachricht As Object
Dim iKonfiguration As Object
Dim Felder As Variant
Set iNachricht = CreateObject("CDO.Message")
Set iKonfiguration = CreateObject("CDO.Configuration")
iKonfiguration.Load -1
Set Felder = iKonfiguration.Fields
With Felder
.Item("http:// _
schemas.microsoft.com/cdo/configuration/smtpusessl")
= True
.Item("http:/ _
/schemas.microsoft.com/cdo/configuration/smtpauthenticate")
= 1
.Item("http:// _
schemas.microsoft.com/cdo/configuration/sendusername")
= "Deine E-Mail-Adresse"
.Item("http:// _
schemas.microsoft.com/cdo/configuration/sendpassword")
= "Dein Passwort"
.Item("http:// _
schemas.microsoft.com/cdo/configuration/smtpserver")
= "SMTP-Server deines Mail-Providers"
.Item("http:// _
schemas.microsoft.com/cdo/configuration/sendusing")
= 2
.Item("http:// _
schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25 'SMTP-Port
.Update
End With
With iNachricht
Set .Configuration = iKonfiguration
.To = "max.musterman@musterdomaene.de"
.CC = ""
.BCC = ""
.ReplyTo = ""
.Sender = "dein.name@deineadresse.de"
.From = """Dein Name"" "
.Subject = "Betreff"
.TextBody = "Deine Nachricht!"
.Send
End With
End Sub


Mit freundlichen Grüßen
Richard

Anzeige
AW: Datei senden mit CDO
17.10.2008 17:01:03
Marc
Hallo Richard,
ich bin ehrlich beeindruckt. Ich wusste gar nicht, dass sowas geht! Kann man auch die Werte, die man für die Zeilen ".Item("http:// _schemas.microsoft.com/cdo/configuration/" vergeben muss auch aus dem bereits installierten Mail-Client abfragen? Die Datei soll von vielen verschiedenen Rechnern aus zu einer Mail Adresse geschickt werden. Und das auf Knopfdruck. Wenn das nicht mehr im Outlook auftaucht, dann ist mir das sogar sehr recht. Alle Rechner haben Outlook installiert und die Datei, ein Formular, soll intern in der Firma verschickt werden. Wie gesagt, wenn man die Werte, die man da eintragen muss, automatisch aus dem installierten System abfragen und eintragen lassen könnte, dann wäre das perfekt!
Grüße,
Marc
Anzeige
AW: Datei senden mit CDO
21.10.2008 09:36:10
Richard
Hallo Marc,
ich weiß genau, was du meinst, aber leider reicht mein Know-How nicht aus, um die Kontoinformationen aus dem Client auszulesen können. Andere hier im Forum können dir da sicherlich mehr helfen. Du musst zugeben, dass wenn es so einfach wäre, dass man auch schnell Missbrauch auf diese Weise betreiben könnte.
Ich hätte 3 Vorschläge, wie man es machen könnte.
1) Für jeden Arbeitsplatz, der diese Datei verwendet, die Einstellungen individuell eingeben.
2) Du richtest eine universelle E-Mail-Adresse ein, die jeder verwendet. Durch Application.Username liest du den in Excel eingetragenen Benutzernamen aus und schreibst jeweils im Betreff "von Benutzer: Betrefftext"
3) Du legst ein verstecktes Sheet als Datenbank für alle Kontoeinstellungen an. Durch Application.Username hast du dann einen Bezug du den anderen Daten in der Tabelle, die du dann wiederrum verwenden kannst. Sicherheitstipp: Hinterlege in Excel keine Passwörter, die würd ich mit einer UserForm oder einer InputBox vom jeweiligen Nutzer abfragen.
Ich persönlich tendiere zum Punkt 2.
Mit freundlichen Grüßen
Richard E.
Anzeige
AW: Datei senden mit CDO
21.10.2008 10:38:52
Marc
Hallo Richard,
vielen Dank für Deine Antwort! Ich habe mich inzwischen auch etwas in die Materie von CDO eingelesen. Also zuerst mal, ich habe Deinen Code mal getestet, indem ich meine eigene Mail-Adresse als Sender und Empfänger eingegeben habe. Das hat leider nicht funktioniert. Ich gehe mal davon aus, dass entweder der Port nicht richtig war, was aber nicht an Dir liegt sondern an den hier gegebenen Einstellungen oder dass die Firewall einen Zugriff von einem anderen Programm als Outlook erkannt und ihn geblockt hat. Auch das liegt dann nicht an Deinem Code! Ich wollte nämlich mit Hilfe Deines Codes auch Deinen Vorschlag Nummer zwei umsetzen.
Also Referenz habe ich mal diese Seite http://www.rondebruin.nl/cdo.htm
herangezogen. Auch der Beispielcode von dieser Seite scheitert an der gleichen Fehlermeldung. Ich habe weitergesucht und einen Code gefunden, der die Maileinstellungen vom Server abruft und benutzt bzw. der zwei über CDO sendet aber wiederum das Mailpostfach benutzt. Das funktioniert lustigerweise. Aber hier taucht nicht nur die Warnmeldung auf, dass eine Applikation versucht eine Mail zu senden sondern auch gleich noch eine weitere Warnmeldung, die aussagt, dass eine Applikation versucht auf die Einstellungen des Mail-Postfaches zuzugreifen. Anstatt einmal muss man dabei also zweimal auf ja klicken. Das ist das Gegenteil von dem, was ich erreichen wollte. :-)
Der Code dafür ist dieser:
Option Explicit

Sub DateiSenden()
Dim objSession As Object
Dim objMessage As Object
Dim objRecipient As Object
'Create the Session Object.
Set objSession = CreateObject("mapi.session")
'Logon using the session object.
'Specify a valid profile name if you want to.
'Avoid the logon dialog box.
objSession.Logon profileName:="MS Exchange Settings"
'Add a new message object to the OutBox.
Set objMessage = objSession.Outbox.Messages.Add
'Set the properties of the message object.
objMessage.subject = "This is a test."
objMessage.Text = "This is the message text."
'Add a recipient object to the objMessage.Recipients collection.
Set objRecipient = objMessage.Recipients.Add
'Set the properties of the recipient object.
objRecipient.name = "name@domain.de"  '


Grundsätzlich ist auch zu beachten, dass man im VBA Projekt in "Extras - Verweise..." den Punkt Microsoft CDO 1.21 anklickt. Sonst funktionieren all diese CDO Codes sowieso nicht.
Außerdem habe ich so erfahren, dass man eine geöffnete Datei nicht einfach per CDO versenden kann. Man muss zuerst eine temporäre Sicherheitskopie erstellen. Das passiert bei der Routine, die hinter dem Befehl "SendMail" steht ebenfalls. Man achtet nur nie darauf...
Ich bin nun dazu übergegangen einfach ein Mailfenster zu öffnen, in dem bereits die Empfängeradresse und der Betreff eingegeben sind. Die Datei ist dabei auch direkt angehängt. Der Benutzer muss dafür nur noch auf senden klicken. Ich glaube, das ist die sauberste Lösung, ohne tiefer ins System eingreifen zu müssen.
Zur Info, der sehr einfache Code dafür ist folgender:


Sub DateiSenden()
Dim Betreff As String
Betreff = "XX_" & Range("J8").Text
Application.Dialogs(xlDialogSendMail).Show "name@domain.de", Betreff
End Sub


Trotzdem vielen Dank für Deine Mühe und Deine hilfreichen Antworten! Du hast mir sehr weitergeholfen!!!
Herzliche Grüße,
Marc

Anzeige
AW: Datei senden mit CDO
21.10.2008 13:56:45
Richard
Hallo Marc,
dass du dich mehr mit der Materie außeinander gesetzt ist, ist sichtbar.
Mich würde jedoch interessieren, welches Betriebssystem du nutzt, soweit mir bekannt ist, ist es nur unter Win2000, WinXP und Windows 2003 Server möglich.
Mit freundlichen Grüßen
Richard E.
AW: Datei senden mit CDO
21.10.2008 14:00:00
Marc
Hallo Richard,
hier im Büro benutzen wir Win XP. Warum möchtest Du das wissen?
Grüße,
Marc
AW: Datei senden mit CDO
21.10.2008 15:17:00
Richard
Ne, nur so... dachte es läuft bei dir nicht, weil du evtl. nicht das richtige Betriebssystem hast.
AW: Datei senden mit CDO
21.10.2008 15:24:00
Marc
Doch, das habe ich. Aber wir haben hier sehr strenge Sicherheitsrichtlinien. Daher denke ich, dass irgendeine dieser Sicherheitsmaßnahmen die Lauffähigkeit des Codes unterbindet. Ist ja auch richtig so. Wäre es so einfach das so zu programmieren, dann wäre ja jedem Virus Tür und Tor geöffnet!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige