Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1688to1692
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
VBA - Formatierung beim Kopieren
05.05.2019 20:36:34
Thaini
Hallo,
ich versuche mit Hilfe von VBA den Inhalt einer Excel Datei in eine Outlook E-Mail zu packen.
Klappt auch fast, allerdings übernimmt er die Bedingte Formatierung nicht komplett und ich finde den Fehler nicht.
Jemand eine Idee?
https://www.herber.de/bbs/user/129607.xlsm

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Formatierung beim Kopieren
05.05.2019 20:57:09
onur
Das ist kein Fehler, du kannst bed. Formatierung nicht mitkopieren.
Es ginge nur INNERHALB von Excel, also von einem Bereich zu einem Anderen, WENN du die Regeln mitkopieren würdest.
Es gäbe aber den Umweg über VBA, wobei der Code die bF simulieren und die tatsächliche Formatierung anpassen würde - also statt der bed. Formatierung ein VBA-Makro, das das Gleiche macht.
AW: VBA - Formatierung beim Kopieren
05.05.2019 21:04:48
Thaini
Aber warum kopiert er dann die grünen Zellen?
Ansich möchte ich nur, dass er die zellfarben richtig übernimmt.
AW: VBA - Formatierung beim Kopieren
05.05.2019 21:07:04
onur
Kann ich dir nicht sagen, da dein Blatt ja passwortgeschützt ist.
Ich vermute, dass die Zellen bereits regulär grün Formatiert sind.
Anzeige
AW: VBA - Formatierung beim Kopieren
05.05.2019 21:14:00
onur
Userbild
AW: VBA - Formatierung beim Kopieren
06.05.2019 13:30:59
Thaini
Habe jetzt nochmal die bedingte Formatierung überarbeitet und das Problem besteht weiterhin. Scheinbar wird nur eine Formatierung übernommen :/
AW: VBA - Formatierung beim Kopieren
06.05.2019 23:42:47
Thaini
Jemand vielleicht eine Idee oder Lösung?
https://www.herber.de/bbs/user/129610.xlsm
PW Hase
Anzeige
AW: VBA - Formatierung beim Kopieren
07.05.2019 09:13:06
Torsten
Hallo Thaini,
Frage: Muss diese Tabelle, die du in die Email einfuegst, bearbeitbar sein? Oder wuerde eventuell ein Bild der Range auch genuegen? Dann koenntest du auch mit VBA einen Screenshot des Bereichs machen und als Bild in die Email einfuegen.
Gruss Torsten
AW: VBA - Formatierung beim Kopieren
07.05.2019 12:09:22
PeterK
Hallo
Probier mal
Private Sub CommandButton1_Click()
    Dim objOL As Object
    Dim objOutlook As Object
    Dim objMail As Object
    Dim rng As Range
    
    Set rng = Nothing
    Set objOutlook = GetObject(, "OUTLOOK.Application")

    Set rng = Sheets("Beispiel").Range("B3:I15").SpecialCells(xlCellTypeVisible)
    
    If Not objOutlook Is Nothing Then
        Set objOL = CreateObject("Outlook.Application")
        Set objMail = objOL.CreateItem(0)

        With objMail
            .To = "test@info.de"
            .Subject = "Betreff"
            .HTMLBody = RangetoHTML(rng)
            .display
        End With
                
        Else
            MsgBox "Bitte Outlook starten."
    End If
    
    Set objOL = Nothing
    
End Sub

Function RangetoHTML(rng As Range)
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim PO As PublishObject

    TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    For Each PO In ActiveWorkbook.PublishObjects
        PO.Delete
    Next PO
    
    rng.Select
    Set PO = ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
                                               Filename:=TempFile, _
                                               Sheet:="Beispiel", _
                                               Source:=rng.Address, _
                                               HtmlType:=xlHtmlStatic, _
                                               DivID:="Test")
    
    PO.AutoRepublish = False
    PO.Publish (True)

    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=")

    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set PO = Nothing
End Function


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Anzeige
AW: VBA - Formatierung beim Kopieren
08.05.2019 11:20:09
Thaini
Funktioniert, vielen Dank.
Er meckert jetzt lediglich bei "PO.Publish (True)" wegen dem Blattschutz rum.
AW: VBA - Formatierung beim Kopieren
08.05.2019 12:26:48
PeterK
Hallo
Den Blattschutz musst Du vorher aufheben und dann wieder setzen
AW: VBA - Formatierung beim Kopieren
08.05.2019 12:44:25
Luschi
Hallo Thaini,
ich habe PeterK's Code auch getestet und für gut befunden; habe aber noch ein paar Feinheiten _ korrigiert (darunter natürlich den Blattschutz)

Private Sub CommandButton1_Click()
Dim objOL As Object, objMail As Object
Dim rng As Range, sHtml As String
On Error Resume Next
Set objOL = GetObject(, "OUTLOOK.Application")
If objOL Is Nothing Then
Set objOL = CreateObject("Outlook.Application")
End If
On Error GoTo 0
If Not objOL Is Nothing Then
Set objMail = objOL.CreateItem(0)
Set rng = Sheets("Beispiel").Range("B3:I15").SpecialCells(xlCellTypeVisible)
With objMail
' --- Signatur retten ---
.BodyFormat = 2 'olFormatHTML
.GetInspector
sHtml = .HtmlBody
.To = "test@info.de"
.Subject = "Betreff"
'Signatur dranhängen
.HtmlBody = RangetoHTML(rng) & "
" & sHtml .Display End With Else MsgBox "Auf diesem PC/Notebook ist kein Outlook installiert!", _ vbMsgBoxSetForeground + 16, "zur Information..." End If Set objOL = Nothing: Set objMail = Nothing: Set rng = Nothing End Sub Function RangetoHTML(rng As Range) Dim fso As Object Dim ts As Object Dim TempFile As String Dim PO As PublishObject TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" For Each PO In ActiveWorkbook.PublishObjects PO.Delete Next PO rng.Select rng.Parent.Unprotect "Hase" Set PO = ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _ Filename:=TempFile, _ Sheet:="Beispiel", _ Source:=rng.Address, _ HtmlType:=xlHtmlStatic, _ DivID:="Test") PO.AutoRepublish = False PO.Publish (True) rng.Parent.Protect "Hase" 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=") Kill TempFile Set ts = Nothing Set fso = Nothing Set PO = Nothing End Function
Gruß von Luschi
aus klein-Paris
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige