ksor
08-19-2024, 11:08 PM
I run Windows 10 FULLY updated and MSOffice 365 HOME - just updated as you can see in the text below.
I have cooked up this VBA code to send a part of the sheet as a outlook mail ... and it kind of works:
Sub SendNamedRangeAsPictureInBody()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WordEditor As Object
Dim ws As Worksheet
Dim strRange As String
Dim rng As Range
Dim InlineShape As Object
' Define your sheet and named range here
Set ws = ThisWorkbook.Sheets("Bla Bla")
strRange = "ToBookKeeping"
' Get the range
Set rng = ws.Range(strRange)
' Copy the range as a picture
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
' Create the Outlook application and email
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
' Construct the email
With OutlookMail
.To = "BookKeepersMailAddress"
.Subject = "Hjemmeladning for den angivne periode !"
' Get the Word editor for the email and paste the image
Set WordEditor = OutlookMail.GetInspector.WordEditor
WordEditor.Content.Paste
' Access the last pasted inline shape (the picture) and resize it
Set InlineShape = WordEditor.InlineShapes(WordEditor.InlineShapes.Count)
InlineShape.LockAspectRatio = msoFalse
InlineShape.Width = InlineShape.Width * 2 ' Double the width
InlineShape.Height = InlineShape.Height * 2 ' Double the height
WordEditor.Content.InsertAfter vbCrLf & vbCrLf '& vbCrLf
' Add additional text or formatting here if needed
WordEditor.Content.InsertAfter "Fortsat god dag !" & vbCrLf & "TEAM SUPPORT"
.Display ' Display the email before sending
'.Send ' At sende giver FEJL !!!!!!!!!!!!!!!
End With
' Clean up
Set ws = Nothing
Set rng = Nothing
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Set WordEditor = Nothing
Set InlineShape = Nothing
End Sub
In my FIRST try it worked really nicely BUT ONLY as a .DISPLAY of the mail !!!!
I had to manually click on the SEND button to send it !
If I used the .SEND command instead of .Display I got this error:
"Invalid procedure call or argument"
in the .Send line !
OK, I then tried to search out there and found others with the same problem and they were adviced to update MSOffice (and thereby Outlook) and so I did ...
and now I just have DIFFERENT error in the line:
Set WordEditor = OutlookMail.GetInspector.WordEditor
the error is: Run-time error '-2147467259 (80004005)'
What the *BEEP* is wrong here - try the attached Excel file ... but put you OWN mail address in it ? :hi:
(PS: I know I asked in another forum ... but no one answers there . then you have to ask some other people !)
I have cooked up this VBA code to send a part of the sheet as a outlook mail ... and it kind of works:
Sub SendNamedRangeAsPictureInBody()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WordEditor As Object
Dim ws As Worksheet
Dim strRange As String
Dim rng As Range
Dim InlineShape As Object
' Define your sheet and named range here
Set ws = ThisWorkbook.Sheets("Bla Bla")
strRange = "ToBookKeeping"
' Get the range
Set rng = ws.Range(strRange)
' Copy the range as a picture
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
' Create the Outlook application and email
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
' Construct the email
With OutlookMail
.To = "BookKeepersMailAddress"
.Subject = "Hjemmeladning for den angivne periode !"
' Get the Word editor for the email and paste the image
Set WordEditor = OutlookMail.GetInspector.WordEditor
WordEditor.Content.Paste
' Access the last pasted inline shape (the picture) and resize it
Set InlineShape = WordEditor.InlineShapes(WordEditor.InlineShapes.Count)
InlineShape.LockAspectRatio = msoFalse
InlineShape.Width = InlineShape.Width * 2 ' Double the width
InlineShape.Height = InlineShape.Height * 2 ' Double the height
WordEditor.Content.InsertAfter vbCrLf & vbCrLf '& vbCrLf
' Add additional text or formatting here if needed
WordEditor.Content.InsertAfter "Fortsat god dag !" & vbCrLf & "TEAM SUPPORT"
.Display ' Display the email before sending
'.Send ' At sende giver FEJL !!!!!!!!!!!!!!!
End With
' Clean up
Set ws = Nothing
Set rng = Nothing
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Set WordEditor = Nothing
Set InlineShape = Nothing
End Sub
In my FIRST try it worked really nicely BUT ONLY as a .DISPLAY of the mail !!!!
I had to manually click on the SEND button to send it !
If I used the .SEND command instead of .Display I got this error:
"Invalid procedure call or argument"
in the .Send line !
OK, I then tried to search out there and found others with the same problem and they were adviced to update MSOffice (and thereby Outlook) and so I did ...
and now I just have DIFFERENT error in the line:
Set WordEditor = OutlookMail.GetInspector.WordEditor
the error is: Run-time error '-2147467259 (80004005)'
What the *BEEP* is wrong here - try the attached Excel file ... but put you OWN mail address in it ? :hi:
(PS: I know I asked in another forum ... but no one answers there . then you have to ask some other people !)