View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Peter T Peter T is offline
external usenet poster
 
Posts: 5,600
Default Best format to export Excel Range to picture?? WMF??

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" wrote in message
...
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