I'm attempting to create a function that will email a portion of a sheet, with the code below:
Function PictureToHTML(wbk, Namesheet, nameRange, imgFile)
wbk.Activate
Worksheets(Namesheet).Activate
nameRange = "C7:C10"
Set Plage = wbk.Worksheets(Namesheet).Range(nameRange)
Plage.CopyPicture
TempFilePath = Environ$("temp") & "\" & imgFile
Set newchart = wbk.Worksheets(Namesheet).ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height)
With newchart
.Activate
.Chart.parent.Border.LineStyle = 0
.Chart.Paste
.Chart.Export TempFilePath, "PNG"
End With
Worksheets(Namesheet).ChartObjects(Worksheets(Namesheet).ChartObjects.Count).Delete
Set Plage = Nothing
PictureToHTML = "<br><B>" & Namesheet & ":</B><br>" _
& "<img src='cid:" & imgFile & "'>"
End Function
I've temporarily hardcoded the range I want to cut (even though it shouldn't be an issue...), and I get the error on this line:
Set newchart = wbk.Worksheets(Namesheet).ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height)
Full error:
Run-time error'-2147417878 (80010108)': Method 'Add' of object 'ChartObjects' failed
Could anyone tell me where my mistake is? Updated code:
Function PictureToHTML(wbk, Namesheet, nameRange, imgFile)
Dim WeightsSheet As Worksheet
Dim newChart As ChartObject
wbk.Activate
Set WeightsSheet = wbk.Worksheets(Namesheet)
Set Plage = wbk.Worksheets(Namesheet).Range(nameRange)
Plage.CopyPicture
TempFilePath = Environ$("temp") & "\" & imgFile
Set newChart = WeightsSheet.ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height)
With newChart
.Activate
.Chart.parent.Border.LineStyle = 0
.Chart.Paste
.Chart.Export TempFilePath, "PNG"
End With
WeightsSheet.ChartObjects(WeightsSheet.ChartObjects.Count).Delete
Set Plage = Nothing
PictureToHTML = "<br><B>" & Namesheet & ":</B><br>" _
& "<img src='cid:" & imgFile & "'>"
End Function