Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 63729 Skopiuj do schowka Outlook 2007 i błąd z HTMLBody
Autor Wiadomość
apollo
ExcelSpec


Pomógł: 1230 razy
Posty: 4257
Wysłany: 08-01-2019, 15:37   Outlook 2007 i błąd z HTMLBody

Mam kawał kodu w Excel do wysyłania mail.

Na office (oulook) 2016 działał zarówno dla sh.Range("D9").Value = "Text" jak i dla sh.Range("D9").Value <> "Text"

Na 2007 działał tylko dla sh.Range("D9").Value <> "Text", czyli z załacznikiem.

Natomiast dla sh.Range("D9").Value = "Text", czyli z HTML, wyskoczyło okno z komunikatem "Application-defined or object-defined error" na linii
Kod:

.HTMLBody = .body & "<br>" & RangetoHTML(rng)

Nie mam tej maszyny, na której wystąpił błąd, więc nie mogę sprawdzić. Ale mi się wydaje, że nie wersja, albo nie tylko wersja, jest przyczyną. Może kwestia bezpieczeństwa na tej maszynie?

Proszę o wskazówki, co to może być i co ustawić itd., żeby działało.

Z góry dziękuję za wszystkie sugestie.

Kod:

Sub send_mail()
Dim filename As String, rng As Range, sh As Worksheet, OutMail As Object, OutApp As Object
    Set sh = ThisWorkbook.Worksheets("SendMail")
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .To = sh.Range("D4").Value
        .cc = sh.Range("D5").Value
        .Bcc = sh.Range("D6").Value
        .Subject = sh.Range("D7").Value
        .body = sh.Range("D8").Value
        If sh.Range("D9").Value = "Text" Then
            With ThisWorkbook.Worksheets("KQ")
                Set rng = .Range("B5:L" & .Cells(Rows.Count, "D").End(xlUp).Row)
            End With
            .HTMLBody = .body & "<br>" & RangetoHTML(rng)
        Else
            filename = save_report
            .Attachments.Add filename
            With CreateObject("Scripting.FileSystemObject")
                .DeleteFile filename
            End With
        End If
        .Display  'Or use Send
    End With
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
        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
ID posta: 359988 Skopiuj do schowka
 
 
Wormsek 



Zaproszone osoby: 2
Wersja: Win Office 2016
Pomógł: 912 razy
Posty: 5267
Wysłany: 08-01-2019, 17:36   

Ciężko powiedzieć bez tego kompa, ale może tip od Rona cię nakieruje?
https://www.rondebruin.nl...look/bmail2.htm
Cytat:
If you want to add a few text lines above the HTML body you can add this to the macro. Note: This is not working if Microsoft Word is your mail editor in Outlook 2000-2003, you can change this setting in Outlook: Tools>Options>…..Mail Format tab
_________________
Pozdro
Worm

FAQ - Najczęściej zadawane pytania.
JAK KORZYSTAĆ Z SZUKAJKI
Słownik funkcji

Znajdź nas na Facebook'u

A może fajny dodatek do excela?
ID posta: 360001 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 1230 razy
Posty: 4257
Wysłany: 08-01-2019, 22:18   

Dziękuję za zainteresowanie ale nie to.
To nie ma nic wspólnego z kodem RangetoHTML od Rona. Błąd występuje i z takim kodem
Kod:

.HTMLBody = .body & "<br>" & "hic hic"


Problem już rozwiązałem. Dodałem BodyFormat
Kod:

const olFormatHTML=2
...
.BodyFormat = olFormatHTML
.HTMLBody = .body & "<br>" & RangetoHTML(rng)
ID posta: 360024 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe