Avatar billede dkclajen Juniormester
18. juni 2017 - 16:38 Der er 8 kommentarer

Excel til outlook

Excel til Outlook
Hej alle sammen,

Er lidt i tvivl om spørgsmålet passer ind her, men nu prøver jeg. Og nogle vil nok opdage jeg har oprettet spørgsmålet under Excel, men da det ikke gav nogle hits, så antog jeg at det nok var det forkerte sted. ?

Jeg har googlet mig til en VBA kode (macro) som generer en HTML fil og indsætter den i body feltet i Outlook.
Det betyder så at den indsætter en tabel på størelse med den fra Excel. Er der en måde hvor man kan nøjes med at kopier indholdet (altså teksten)?
Kan se at en Dim sætning ikke kan holde på de linjeskift som ligger i cellen.

Håber nogen kan hjælpe. :) Og på forhånd tak.
Avatar billede dkclajen Juniormester
18. juni 2017 - 18:18 #1
Dette er koden som laver HTML filen.

Function RangetoHTML2(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"

    '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)
    RangetoHTML2 = ts.readall
    ts.Close
    RangetoHTML2 = Replace(RangetoHTML2, "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
Avatar billede kim1a Ekspert
18. juni 2017 - 20:53 #2
Jeg tror ikke vi forstår dit spørgsmål helt. Du vil kopiere tekst i din range, men beholde "opsætningen" uden at kopiere tabellen?

Kan du evt. vise med et eksempel hvad du ønsker?
Avatar billede dkclajen Juniormester
18. juni 2017 - 21:19 #3
Som det er nu indsætter den tabellen i min mail, selvfølgelig med tekst i.

Det betyder at tabellens højde og brede som den er i Excel også er sådan i mailen. Men er tabellen i Excel kun udfyldt med to linjer, så er der en masse spildplads ned til min signatur. Så tænkte jeg at det problem måske kunne løses ved at den lavet en text fil fremfor en html fil som ovennævnte kode jo gør.

Giver det bedre mening?
Avatar billede kim1a Ekspert
18. juni 2017 - 23:31 #4
Ja bestemt. Så handler det om at lave din range skarpere. Hvordan defineres den?
Avatar billede dkclajen Juniormester
17. juli 2017 - 20:09 #5
Har da fuldstændig glemt den her tråd. 🙁 Men den bliver jo defineret af det som er markeret. Hvis det er det du mener?
Avatar billede kim1a Ekspert
17. juli 2017 - 22:37 #6
Hvis jeg forstår rigtigt så ønsker du i stedet for at indsætte en tabel på f.eks. 3x8 celler kun at indsætte 2x4 (hvis det er der teksten er).
Jeg kan med min erfaring ikke læse hvordan du markerer området, men har jeg opfattet det korrekt?

Jeg tror stadig et eksempel vil være et hit til forståelsen.

Det kan være et simpelt spørgsmål om at markere på anden vis...
Avatar billede dkclajen Juniormester
18. juli 2017 - 09:20 #7
Ikke helt. Lige nu indsætter den en tabel præcis som du nævnte. Det gør den fordi den laver mine markeret felter om til en htm fil som jeg ser det. Her ville jeg god at man kunne lave den om til en text fil, eller noget andet hvor den ikke medføre tabellen men kun teksten. Det er rent designmessigt jeg vil gøre det på den anden måde. 😊

Ville rigtig gerne lave et eksempel, men er ikke helt sikker på hvad det skulle vise
Avatar billede kim1a Ekspert
18. juli 2017 - 13:38 #8
Det er nok bare mig som ikke forstår at læse det html værk, for jeg kan ikke se hvordan tabellen skabes, så jeg tænkte at der manglende resten af koden.

Jeg kan se en range copy, men ikke hvordan den range skabes i det kode du har lagt op.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester