Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

per Excel Makro, E-Mail generieren und mit Inhalt füllen

Frage Entwicklung VB for Applications

Mitglied: Hesperus

Hesperus (Level 1) - Jetzt verbinden

06.10.2009 um 23:51 Uhr, 31004 Aufrufe, 6 Kommentare

Es soll in Excel per Makro (Button) eine E-Mail generieren und mit einem vorher definierten Bereich des Dokumentes gefüllt werden.

Guten Abend zusammen,

ich arbeite im moment an einem Excel Makro, welches "bei Klick" eine neue E-Mail (Outlook) öffnen und danach mit einem bestimmten Bereich des Excel-Dokuments füllen soll. Soweit so gut funktioniert zumindest schon einmal der Teil mit der E-Mail und der Auswahl des Bereiches nur bei dem Teil, wie ich diesen Bereich in die E-Mail bekomme, könnte ich Hilfe gebrauchen *g*.

Hier erst einmal der bisherige Code:

01.
Private Sub Bestellung_Click() 
02.
 
03.
Range("A1:H45").Select 
04.
Selection.Copy 
05.
Dim ol, mail As Object 
06.
Set ol = CreateObject("Outlook.Application") 
07.
Set mail = ol.CreateItem(0) 
08.
mail.Subject = "Bestellung " & Now 
09.
mail.To = "Max.Mustermann@test.uk" 
10.
mail.cc = "Max.Mustermann@test.uk" 
11.
'mail.bcc = "" 
12.
mail.body = "test" 
13.
 
14.
'Mail anzeigen 
15.
mail.Display 
16.
 
17.
End Sub"
Da wo im Moment "test" steht soll dann der Inhalt der Range("A1:H45") stehen, nur hat bisher keiner meiner Befehle funktioniert. Ich hoffe Ihr könnt mir hier einen Tipp geben.

Als zweites wollte ich (wenn möglich) nach versenden der E-Mail einen zweiten Bereich (Range("A7:H45")) leeren/löschen.
Ist es möglich diesen Befehl mit dem senden der E-Mail zu verknüpfen?

Habt schon mal vielen Dank für Eure Hilfe
MfG Hesperus
Mitglied: godlie
07.10.2009 um 11:41 Uhr
Hallo,

naja so einfach mit der Range geht das leider nicht.
Was dir evlt. helfen kann ist es wenn du mit VBA die Zwischenablage ausliest und diese dann einfügst in den Body der Email.
Bitte warten ..
Mitglied: Hesperus
07.10.2009 um 12:06 Uhr
Hallo godlie,

genau so hatte ich mir das Vorgestellt, nur fehlt mir dafür der ensprechende Befehl. Alles was ich bisher ausprobiert habe ist auf Fehler gelaufen.

Vielleicht kannst du mir da einen Tipp geben wie es aussehen könnte.

Vielen Dank
Hesperus
Bitte warten ..
Mitglied: 76109
07.10.2009 um 17:42 Uhr
Hallo Hesperus!

Also mit Text bekommst Du keine vernünftige Tabellenansicht hin. Aufgrund der unterschiedlichen Zeichenbreiten nützt es auch nichts, eine bestimmte Spaltenbreite mit Leerzeichen zu erzeugen.

Alternativ kannst Du mal diesen Code testen. Er erzeugt eine Tabelle im HTML-Format und funktioniert zumindest mit Outlook Express.

Die Konstanten entsprechend anpassen:
01.
Option Explicit 
02.
 
03.
Const SheetName = "Tabelle1"    'Tabellenname 
04.
 
05.
Const BegZeile = 1              'Zeile 1 
06.
Const EndZeile = 45             'Zeile 45 
07.
Const BegSpalte = 1             'Spalte A 
08.
Const EndSpalte = 8             'Spalte H 
09.
 
10.
Const DelRange = "A7:H45"       'Inhalte löschen 
11.
 
12.
Private Sub Bestellung_Click() 
13.
    Dim appMail As Object 
14.
     
15.
    Set appMail = CreateObject("Outlook.Application").CreateItem(0) 
16.
 
17.
    With appMail 
18.
        .Subject = "Bestellung " & Now 
19.
        .To = "Max.Mustermann@test.uk" 
20.
        .cc = "Max.Mustermann@test.uk" 
21.
        .HTMLbody = GetHtmlBodyText() 
22.
        .Display 
23.
    End With 
24.
    Set appMail = Nothing 
25.
End Sub 
26.
 
27.
Private Function GetHtmlBodyText() As String 
28.
    Dim Wks As Worksheet, Text As String, c As Integer, r As Integer 
29.
     
30.
    Set Wks = Sheets(SheetName) 
31.
     
32.
    Text = "<DIV>" & vbCrLf 
33.
    Text = Text & "<TABLE cellSpacing=0 cellPadding=0 width=""100%"" border=1>" & vbCrLf 
34.
    Text = Text & "<TBODY>" & vbCrLf 
35.
     
36.
    For r = BegZeile To EndZeile 
37.
        Text = Text & "<TR>" & vbCrLf 
38.
        For c = BegSpalte To EndSpalte 
39.
            Text = Text & "<TD>" & Wks.Cells(r, c) & "</TD>" & vbCrLf 
40.
        Next 
41.
        Text = Text & "</TR>" & vbCrLf 
42.
    Next 
43.
     
44.
    Text = Text & "</TBODY></TABLE></DIV>" & vbCrLf 
45.
     
46.
    'Löschen (Formate bleiben erhalten) 
47.
    'Wks.Range(DelRange).ClearContents 
48.
     
49.
    GetHtmlBodyText = Text 
50.
End Function
Gruß Dieter
Bitte warten ..
Mitglied: Hesperus
09.10.2009 um 08:00 Uhr
Hallo Dieter,

der Code funktioniert genau so wie ich mir das vorgestellt habe. Hab vielen Dank für deine Hilfe.

Schönes WE
LG Hesperus
Bitte warten ..
Mitglied: 76109
09.10.2009 um 09:29 Uhr
Hallo Hesperus!

Freut mich zu hören, dass es nach Deinen Wünschen funktioniert

Falls Du die Tabellenansicht etwas verschönern möchtest, dann ändere mal in Zeile 33 die Werte für "cellSpacing=0" z.B. in 1, 2.

Auch Dir ein schönes WE

Gruß Dieter
Bitte warten ..
Mitglied: togreiner
11.02.2011 um 09:40 Uhr
Hallo,
gibt es diese Exceldatei final ? Ich brauch dringend etwas ähnliches, habe aber keine Kenntnisse in der Programierung

t.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel-Makro (7)

Frage von yuki13 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel Makro : Erst prüfen bei erfolgreicher IF einen Wert überschreiben (4)

Frage von Matze1508 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel Makro - Button "Springe zu Zeile mit heutigem Datum" (5)

Frage von hannsgmaulwurf zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...