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: