D
deko
When using automation from Access to create an embedded chart, the chart
appears on the first worksheet in the workbook rather than the sheet
specified with the Location method:
Dim xlapp As Excel.Application
Dim cht As Excel.Chart
Set xlapp = CreateObject("Excel.Application")
Set cht = xlapp.Workbooks(strXlsFile).Charts.Add
Set cht = cht.Location(Where:=xlLocationAsObject, Name:="Sheet3")
The chart appears embedded in Sheet1, not Sheet3.
I understand the Location method creates a new chart object (destroying any
reference to the original chart object), so the return value of the Location
method needs to be assigned to the cht object variable (which can then be
used for setting SourceData and other properties). Also, the Charts.Add
method by default creates the chart on a new sheet - so apparently the
Location method is successfully defining the chart as an embedded chart, but
why is the Name parameter not working?
I tried following a suggestion made earlier using the below code, but got
the same results:
Set cht = xlapp.Workbooks(strXlsFile).Charts.Add
For i = cht.SeriesCollection.Count To 1 Step -1
cht.SeriesCollection(i).Delete
Next i
cht.SetSourceData
Source:=xlapp.Workbooks(strXlsFile).Worksheets("Sheet3").Range("A1:C" & _
xlapp.Workbooks(strXlsFile).Worksheets("Sheet3").Range("C1").End(xlDown).Row
), _
PlotBy:=xlColumns
cht.ChartType = xlLineMarkersStacked
Set cht = cht.Location(Where:=xlLocationAsObject, Name:="Sheet3")
I'm wondering if the Location method parameter "Where:=xlLocationAsObject"
points to a worksheet object that is undefined since I am running this from
an Access module. But how to define it?
Has anyone run into this before?
Thanks in advance.
appears on the first worksheet in the workbook rather than the sheet
specified with the Location method:
Dim xlapp As Excel.Application
Dim cht As Excel.Chart
Set xlapp = CreateObject("Excel.Application")
Set cht = xlapp.Workbooks(strXlsFile).Charts.Add
Set cht = cht.Location(Where:=xlLocationAsObject, Name:="Sheet3")
The chart appears embedded in Sheet1, not Sheet3.
I understand the Location method creates a new chart object (destroying any
reference to the original chart object), so the return value of the Location
method needs to be assigned to the cht object variable (which can then be
used for setting SourceData and other properties). Also, the Charts.Add
method by default creates the chart on a new sheet - so apparently the
Location method is successfully defining the chart as an embedded chart, but
why is the Name parameter not working?
I tried following a suggestion made earlier using the below code, but got
the same results:
Set cht = xlapp.Workbooks(strXlsFile).Charts.Add
For i = cht.SeriesCollection.Count To 1 Step -1
cht.SeriesCollection(i).Delete
Next i
cht.SetSourceData
Source:=xlapp.Workbooks(strXlsFile).Worksheets("Sheet3").Range("A1:C" & _
xlapp.Workbooks(strXlsFile).Worksheets("Sheet3").Range("C1").End(xlDown).Row
), _
PlotBy:=xlColumns
cht.ChartType = xlLineMarkersStacked
Set cht = cht.Location(Where:=xlLocationAsObject, Name:="Sheet3")
I'm wondering if the Location method parameter "Where:=xlLocationAsObject"
points to a worksheet object that is undefined since I am running this from
an Access module. But how to define it?
Has anyone run into this before?
Thanks in advance.