Sända cellområden som meddelanden

Här visas ett tips som kan vara värdefullt för Er som vill skicka cellområden istället för hela arbetsböcker som bilagor per e-post. Cellområdet blir ett inbäddat objekt i meddelandet.

För att fungera krävs att en referens anges till Microsoft Scipting Runtime.

I exemplet används s k Late binding vilket innebär att ingen referens till MS Outlook objekt-bibliotek anges.
 

Option Explicit

 Sub Skicka_CellOmrade_HTML()

   '© 2001-2002 Alla rättigheter Daniel Klann

   'Reviderad och utvecklad av XL-Dennis

   Dim olApp As Object, olNewMail As Object

   Dim fsoObj As Scripting.FileSystemObject

   Dim fsoTStream As Scripting.TextStream

   Dim rnOmrade As Range

   Dim stHTMLBody As String

 

   'Här väljs det önskade cellområdet.

   On Error Resume Next

   Set rnOmrade = Application.InputBox("Vänligen ange cellområdet som ska skickas:", _

         , Selection.Address, , , , , 8)

   If rnOmrade Is Nothing Then Exit Sub

   On Error GoTo 0

 

   'Här skapas HTML-filen av det valda cellområdet.

   ActiveWorkbook.PublishObjects. _

         Add(xlSourceRange, "C:\temp.htm", rnOmrade.Parent.Name, rnOmrade.Address, _

         xlHtmlStatic).Publish True

 

   'Här skapas en session av Outlook och ett nytt e-post .

   Set olApp = CreateObject("Outlook.Application")

   Set olNewMail = olApp.CreateItem(0)

 

   'Öppnar HTML-filen via FIleSystemObject i ett TexStream-objekt.

   Set fsoObj = New Scripting.FileSystemObject

   Set fsoTStream = fsoObj.OpenTextFile("C:\temp.htm", ForReading)

 

   'Här tilldelas texten från TextStream-objektet variabeln stHTMLBody.

   stHTMLBody = fsoTStream.ReadAll

 

   With olNewMail

      .HTMLBody = stHTMLBody

      .Display

   End With

   'Här tar vi bort den temporära filen
   Kill
"C:\temp.htm"

 End Sub

 

Så här kan det färdiga resultatet se ut när ovanstående procedur har körts: