Irrespective of what format you copy the image of the range to the
clipboard, when you paste to the chart and save as Gif that's what you'll
get, a gif image. But normally a Gif should be fine. Have a go with the
following -
Sub Rng2GifTest()
Dim sfilename As String
Dim chtObj As ChartObject
Dim cht As Chart
sFile = "c:\temp\Rng2ChartTest.gif"
On Error Resume Next
Kill sFile
On Error GoTo 0
With Range("A1:H15")
.Value = 123.4567 ' just for testing of course
.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
'size to range plus a bit for chart border
Set chtObj = ActiveSheet.ChartObjects.Add( _
.Left, .Top, .Width + 6, .Height + 6)
End With
chtObj.Chart.Paste
chtObj.Chart.Export sFile ' default filter is Gif
chtObj.Delete
End Sub
The main advantage WMF/EMF will have offer over GIF is resizing the image.
In theory you can export the chart with whatever filter your system can
support. However many systems appear to support little more than the default
GIF format (don't bother writing the default gif filter, potentially does
more harm than good).
If the above is not good enough, I suspect the only alternative would be to
write the clipboard image to file directly (lot of API stuff).
Regards,
Peter T
Normally Gif format should be fine.
"Marcus" <(E-Mail Removed)> wrote in message
news:0A36B89E-972E-43B5-8E95-(E-Mail Removed)...
> Hi guys,
>
> I am trying to export an Excel range into "nice picture" format. But
> exporting as GIF, the quality is too low (we cannot read the number!).
> Instead of GIF, can we save the range as Windows Metafile Picture format??
Or
> is my code is wrong? Any suggestion?
> Thank you in advance for your expertise!!
>
> Yvan
>
>
> Please find my code:
> Private Sub SaveRangeAsGIF1()
> Dim r As Range
> Dim varFullPath As Variant
> Dim Graph As String
> Application.ScreenUpdating = False
> Set r = Range("a1:v32")
> r.Select
> ' copy with .CopyPicture
> Selection.CopyPicture appearance:=xlScreen, Format:=xlBitmap
> ' use chart to ease the export and create a chart
> Workbooks.Add (1)
> ActiveSheet.Name = "inGIF"
> Charts.Add
> ActiveChart.ChartType = xl3DArea
> ActiveChart.SetSourceData r
> ActiveChart.Location xlLocationAsObject, "inGIF"
> ' chart as transition and use .ClearContents
> ActiveChart.ChartArea.ClearContents
> 'paste the chart
> ActiveChart.Paste
> Graph = Mid(ActiveChart.Name, Len(ActiveSheet.Name) + 1)
> ' export
> varFullPath =
> Application.GetSaveAsFilename("C:\Temp\Actuapedia_CPA_RSLT-" & Format(Now,
> "yyyymmddhhnn") & ".gif", _
> "Fichiers GIF (*.gif), *.gif")
> ActiveChart.Export varFullPath, "GIF"
> ActiveChart.Pictures(1).Delete
> ActiveWorkbook.Close False
> End Sub
>
|