Frage

Also habe ich an verschiedenen Stellen im Internet Code gesammelt, um eine Tabelle in Outlook zu exportieren und automatisch zu versenden, und habe gerade festgestellt, dass die E-Mail nicht wirklich Blackberry-freundlich ist (hauptsächlich aufgrund der Tatsache, dass der E-Mail-Text als HTML gesendet wird und Nicht als "Rich Text", DENKEN SIE daran, dass die Tabelle auch im Rich Format vorliegen muss).Mir fehlt eine Codezeile, die Outlook anweist, E-Mails als "Rich Text" zu senden, aber ich weiß nicht, was es ist.Kann mir jemand helfen?Bitte lesen Sie den vollständigen Code unten im Anhang (Entschuldigung für die Länge des Codes im Voraus).

Danke P

Sub Mail_Sheet_Outlook_Body()
    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    Set rng = Nothing
    Set rng = Selection.SpecialCells(xlCellTypeVisible)

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .To = "email@email.com"
        .CC = ""
        .BCC = ""
        .Subject = "Enter Subject text here"
        .HTMLBody = RangetoHTML(rng)
       '.Attachments.Add ("c:\temp\" & ActiveSheet.Range("DateSerial").Value & ".pdf")
        .Display
    End With
    On Error GoTo 0

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, and Outlook 2010.
    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"

    ' Copy the range and create a workbook to receive the data.
    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 Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    ' Publish the sheet to an .htm file.
    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

    ' Read all data from the .htm file into the RangetoHTML subroutine.
    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=")

    ' Close TempWB.
    TempWB.Close savechanges:=False

    ' Delete the htm file.
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function
War es hilfreich?

Lösung

Hintergrund zu antworten

Das Ziel der Frage war, eine Excel-Tabelle zu erhalten, die in einer E-Mail gesendet wurde, die auf einem BlackBerry lesbar war. Es gab eine Reihe roter Herren, bevor die Ursache des Problems als Publishobjects von Excel identifiziert wurde. Das Problem war möglicherweise die große Anzahl unnötiger CSS-Formate oder die Größen von Zellen und Schriftarten in Punkten, aber unabhängig von dem Problem, der HTML, der HTML nicht korrekt vom Display-Motor von BlackBerry ordnungsgemäß dargestellt wird.

Ich habe ein ziemlich einfaches Stück VBA-Code erstellt, um eine HTML-Tabelle aus einem Bereich zu erstellen. Es kopierte Werte, fette, kursive, Schriftfarbe, Hintergrundfarbe und Spaltenbreiten von Excel bis zur HTML-Tabelle. Obwohl die erste Version die vollen Anforderungen von Macutan nicht erfüllte, zeigte er, dass der Ansatz praktikabel war: Eine HTML / CSS-Tabelle mit einem Minimum an Formatierung wurde korrekt und attraktiv auf einem BlackBerry angezeigt.

Da ich weitere Verbesserungen der Macutans-Anforderungen ergab, entdeckte ich, dass das gleiche Problem mit anderen Smartphones existierte, und es gab ein allgemeines Bedürfnis für eine solche Routine. Ich entwickle die Routine weiterhin mit der Absicht, dass die endgültige Version alle Excel-Formatierung in die HTML-Tabelle kopiert.

Der Code plus Die Anweisungen übertraf bald die Limit von 30.000 Zeichen des Stapelsüberlaufs. Ich habe neue Versionen per E-Mail an Macutan bestanden. Die Dokumentation vom Codemodul befindet sich unten. Wenn Sie mein Profil ansehen, gibt es eine E-Mail-Adresse. Ich werde auf Anfrage Kopien meines Codes weiterleiten. generasacodicetagpre.

Andere Tipps

Stellen Sie in Ihrem With Block die BodyFormat Eigentum zu olFormatRichText.

With OutMail
.BodyFormat = olFormatRichText
' rest of your code

Lassen Sie uns wissen, ob das funktioniert.

Bearbeiten:

Einstellen der HTMLBody Die Eigenschaft konvertiert die E-Mail in HTML.Wenn Sie die Einstellung BodyFormat Eigentum zu olFormatRichText dann müssten Sie das verwenden Body Eigenschaft, die die Möglichkeit der Verwendung von HTML ausschließen würde.

Ich sehe also keine Möglichkeit, wie Sie beide die E-Mail mit einer HTML-Tabelle einrichten könnten und senden Sie es als Rich-Text-Format.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top