• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Van excel naar outlook heeft geen borders

Status
Niet open voor verdere reacties.

abracadaver909

Gebruiker
Lid geworden
12 mrt 2011
Berichten
94
Beste helpmij-ers,

Ik zit met het volgende. Vanuit een macro in excel stuur ik via outlook een mail. Deze mail bevat de inhoud van 2 bladen als body, dus niet als bijlage. Het bestand wordt van excel naar outlook als html verstuurd, in outlook wordt de mail als html gelezen en dus niet door Word behandeld. Zowel outlook als excel zijn van office 2003.

In mijn outlook staat de mail precies zoals in excel, celgrootte, inhoud en randopmaak. Maar als ik de mail in een andere mail client open, dan is alles nog wel gerangschikt, maar de randen zijn weg. dit geeft een onoverzichtelijk beeld.

De macro heb ik overgenomen van Ron de Bruin en ziet er als volgt uit:
Code:
Sub Verstuur()

' Verstuurd dit excel bestand naar alle e-mail adressen in sheet "E-mails". Onderwerp is de datum ingevuld in cel F3.

    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    Dim strto As String
    Dim rng As Range
    Dim rng2 As Range
    Dim StrBody As String

    
  ' StrBody vervangt het gedeelte voor de opmerkingen,
  ' omdat naders rij F wordt verlengd tot de volledige lengte van wat er in de opmerkingen komt te staan.

  
    StrBody = Sheets("Bezetting").Range("F31").Value & "<br>" & _
            Sheets("Bezetting").Range("F32").Value & "<br>" & _
            Sheets("Bezetting").Range("F33").Value & "<br>" & _
            Sheets("Bezetting").Range("F34").Value & "<br>" & _
            Sheets("Bezetting").Range("F35").Value & "<br>" & _
            Sheets("Bezetting").Range("F36").Value & "<br>" & _
            Sheets("Bezetting").Range("F37").Value & "<br>" & _
            Sheets("Bezetting").Range("F38").Value

            
    Application.ScreenUpdating = False
    Set rng = Nothing
    Set rng2 = Nothing
    Set rng = Sheets("Bezetting").Range("A1:Q28").SpecialCells(xlCellTypeVisible)
    Set rng2 = Sheets("E-mail").UsedRange.SpecialCells(xlCellTypeVisible)
    
    

    On Error GoTo cleanup
    For Each cell In ThisWorkbook.Sheets("E-mail").Range("D2:D50").Cells.SpecialCells(xlCellTypeConstants)
        
        If cell.Value Like "?*@?*.?*" Then
               
        strto = strto & cell.Value & "; "
        End If
   
    Next cell
    
            Set OutApp = CreateObject("Outlook.Application")
            Set OutMail = OutApp.CreateItem(0)
            On Error Resume Next
            With OutMail
                .To = strto
                .Subject = "Bezetting " & Cells(3, 6).Value
                .HTMLBody = RangetoHTML(rng) & "<br><br>" & StrBody & RangetoHTML(rng2)
                '      & vbNewLine & vbNewLine & _
                '        "Please contact us to discuss bringing " & _
                '       "your account up to date"
                
                'You can also add files like this:
                '.Attachments.Add ActiveWorkbook.FullName
                
                .Send  'Or use .Display
                                                
            End With
            On Error GoTo 0
            Set OutMail = Nothing
    
cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-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 new workbook to past the data in
    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
        .UsedRange.EntireColumn.AutoFit  ' Deze zelf toegevoegd om alles te laten autofitten
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With
 
    'Publish the sheet to a 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 RangetoHTML
    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 we used in this function
    Kill TempFile
 
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
    
End Function

Kan iemand mij helpen met deze opmaak?

Groeten
Chris Verschoor
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan