View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Sol Apache Sol Apache is offline
external usenet poster
 
Posts: 8
Default Global macro for resizing and reformatting Excel charts

Robin

Thank you very much for replying in such detail to my request. All that I
needed was this one line:

ResizeChartAndCopy ActiveChart, 300, 200, Sheets(2)


The rest I think I can record, and amending the measurements.

I wonder why it is so hard to find things in the online help. I searched for
³resize² and ³resize chart² and nothing so simple, or appropriate, could I
find.


Sol

PS You never replied that you would be doing a Mac version of your Excel
enhancements. Will you be waiting until Macs use Intel in about a yearıs
time?


On 21/10/05 01:21, in article , "Robin
Hammond" wrote:

Sol,

This should get you heading in the right direction.

Sub ComplexDemo()
Dim lCounter As Long
With ActiveSheet
For lCounter = 1 To .ChartObjects.Count
ResizeChartAndCopy .ChartObjects(lCounter).Chart, 300, 200,
Sheets(2), lCounter
Next lCounter
End With
End Sub

Sub SimpleDemo()
ResizeChartAndCopy ActiveChart, 300, 200, Sheets(2)
End Sub

Public Sub ResizeChartAndCopy(chInput As Chart, _
lWidth As Long, _
lHeight As Long, _
shDestination As Worksheet, _
Optional lChartCounter As Long = 1)
'-----------------------------------------------------------------------------
----------
' Procedure : ResizeChartAndCopy
' DateTime : 10/21/2005 07:54
' Author : Robin Hammond
' Purpose : chInput is the chart you want to copy
' lWidth is desired width of the chart
' lHeight is desired height of the chart
' shDestination is the target worksheet for the copied picture
' lChartCounter is a counter used to position the chart on the
target sheet
'-----------------------------------------------------------------------------
----------
'
Dim lOffsetRow As Long
With chInput.Parent
.Border.LineStyle = xlNone
.Width = lWidth
.Height = lHeight
End With
chInput.CopyPicture Appearance:=xlPrinter, Size:=xlScreen, Format:= _
xlPicture
With shDestination
lOffsetRow = 1 + ((lChartCounter - 1) * ((lHeight + .Rows(1).RowHeight)
_
/ .Rows(1).RowHeight))
.Paste .Cells(lOffsetRow, 1)
End With
End Sub

Robin Hammond
www.enhanceddatasystems.com


"Sol Apache" wrote in message
...
Sorry Robin, I canıt access a windows box and even if I did I donıt think
the client would be interested in buying XspandXL for its Excel users.

I think it looks interesting though. Are you ever going to do a Mac
version?

Is there no simple way of making a global change chart size macro?

Thanks

Sol




On 20/10/05 01:55, in article ,
"Robin
Hammond" wrote:

Sol,

If you have the alternative of doing this on a windows box you could have
a
look at the Chart Browser in my XspandXL add-in:
http://www.enhanceddatasystems.com/E...pandXLHome.htm

Robin Hammond
www.enhanceddatasystems.com

"Sol Apache" wrote in message
...
I am using Excel 2004 (Mac) to create an Excel template for charts to be
copied into PPT and Word - all to be used on Windows.

I have created a macro which reformats a chart (removes the unwanted
black
border which Excel automatically imposes upon user-defined charts), then
I
resize the chart to the size I want (a choice of three sizes which the
user
selects using a userform). This means I have to deselect the chart, hold
the
shift key down to make the chart an object that can be resized.

The problem is that the recorded macro refers specifically to a
worksheet
and a chart and in my recording I had to deselect the chart in order to
hold
the shift key down.

I want the macro to work on any selected chart created in a
workbook based on this template. I also want it to go back to ordinary
selection again so I can copy the chart as a picture.

I have very rarely used macros in Excel, and so I know very little about
the
process - except that recorded macros are quite difficult to use
globally.

So Iıd very much appreciate any help on this problem.


Sol

PS Would it help if I provided the VB text I have created already?