Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1752to1756
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

Blattinhalt via Email versenden

Blattinhalt via Email versenden
16.04.2020 13:11:35
ingo
Hallo, ich bin zwar neu hier aber lese schon sehr lange im Forum mit.
Ich habe nun einen VBA Code bei welchem ich mit meinem Wissen (bescheiden) nicht mehr weiter komme.
Folgende Aufgabenstellung.
Es gibt das Blatt "Freigabe", dieses Blatt hat 135 Zeilen und 10 Spalten welche als Druckbereich markiert sind.
Je nach dem was auf einem anderen Blatt eingegeben wir kann es sein dass mehrere Zeilen im Blatt "Freigabe" ausgeblendet werden.
Nun soll via Button der Druck Bereich von Blatt "Freigabe" via email versandt werden.
Dies funktioniert auch einwandfrei, mein Problem ist aber dass er mir auch die ausgeblendeten Zeilen versendet, dies soll aber vermieden werden, d.h. es sollen nur die Zeilen versendet werden welche auch eingeblendet sind. Ich würde mich über jede Hilfe freuen.
Sub Freigabe_anfordern()
If ActiveSheet.Range("C5") = "" Then
MsgBox "zuerst Kundennamen ausfüllen", vbCritical
Else
If ActiveSheet.Range("C6") = "" Then
MsgBox "zuerst Kundennummer ausfüllen", vbCritical
Else
If ActiveSheet.Range("C7") = "" Then
MsgBox "zuerst Angebotsnummer ausfüllen", vbCritical
Else
If ActiveSheet.Range("C8") = "" Then
MsgBox "zuerst Postleitzahl ausfüllen", vbCritical
Else
If ActiveSheet.Range("C9") = "" Then
MsgBox "zuerst Stadt / Ort ausfüllen", vbCritical
Else
If ActiveSheet.Range("C10") = "" Then
MsgBox "zuerst Stassenname und Nr. ausfüllen", vbCritical
Else
If ActiveSheet.Range("C11") = "" Then
MsgBox "zuerst Ansprechpartner Vorname ausfüllen", vbCritical
Else
If ActiveSheet.Range("C12") = "" Then
MsgBox "zuerst Ansprechpartner Nachname ausfüllen", vbCritical
Else
Dim olApp     As Object
Dim AWS       As String
Dim olOldbody As String
Dim Betreff As String
Betreff = Format(Date, "YYYY MM DD  ") & "Text" & Range("Datenblatt!C5").Value & (" - Kd.Nr.: ") _
_
& Range("Datenblatt!C6").Value & ("Text ") & Range("Datenblatt!C7").Value
ActiveWorkbook.Save
AWS = ActiveWorkbook.FullName
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldbody = .htmlBody
.To = "text@text"
.Subject = Betreff
.htmlBody = "
Text,
Text.
Text& _ RangeToHTML(Range("Freigabe!Druckbereich")) & olOldbody End With End If End If End If End If End If End If End If End If End Sub

Function RangeToHTML(rng As Range)
Dim Fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error GoTo 0
End With
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ts = Fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangeToHTML = ts.readall
ts.Close
RangeToHTML = Replace(RangeToHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set Fso = Nothing
Set TempWB = Nothing
End Function

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattinhalt via Email versenden
16.04.2020 14:22:41
volti
Hallo Ingo,
von den gefühlt tausend Möglichkeiten eine eMail mit und ohne Einbettung zu erstellen, gibt es u.a. neben der bekannten RangeToHTML auch die Möglichkeit, über den Wordeditor zu gehen.
Diese Möglichkeit nimmt ausgeblendete Zeilen und Spalten nicht mit. Zusätzlich gibt es auch die Möglichkeit, z.B. ein Bild (Screenshot) einzufügen.
Nachfolgend findest Du ein einfaches Beispiel. Vielleicht ist es das, was Du suchst und kannst es Dir in dein Tool einbauen. Probiere es einfach mal aus...

Sub SendeMailMitWordEditor()
'Sub sendet eine Mail mit Ausschnitten aus Excelsheet und Signatur via Word-Editor
 Dim sMailtext As String
 sMailtext = "Hallo, dies ist nur ein Test"             'Bodytext
 With CreateObject("Outlook.Application").CreateItem(0)
  .Getinspector
  .Subject = "Test"
  .body = sMailtext & .body
  .Importance = 1
  .To = "Nach@web.de"
  .CC = ""
  .display
  With .Getinspector.WordEditor.Application.Selection
     ThisWorkbook.Worksheets("MeineHerber").Range("A1:E5").Copy
    .Start = Len(sMailtext)
    .End = Len(sMailtext)
    .Paste
  End With
 End With
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Blattinhalt via Email versenden
16.04.2020 15:11:35
Luschi
Hallo Karl-Heinz,
sehr schöne Lösung ohne das 'RangeToHTML'-Geraffel. Leider gibt es zu Outlook / Getinspector / WordEditor sehr selten mal was zu lesen - hast Du da einen Tipp parat?
Gruß von Luschi
aus klein-Paris
AW: Blattinhalt via Email versenden
16.04.2020 15:21:41
volti
Hallo Luschi,
ich habe mir hier in den letzten Jahren so etliche Lösungen für verschiedene Anforderungen gebastet und oft gibt auch mehrere ähnliche, aber nicht gleiche Wege zum Ziel.
Aber ehrlich gesagt, sind das alles (Ei, guck siehe da) Anregungen irgendwo aus dem Netz, die ich dann für mich erweitert, optimiert und angepasst habe.
Eine lesenswerte, weiterführende Gesamtlektüre dazu habe ich leider auch nicht parat. Bin auch eher der Google-Learning by Try&Error-Typ als der große Nachleser.
viele Grüße
Karl-Heinz
Anzeige

39 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige