This is probably really bad form (posting as an answer to my question the answer to Joel's question in his answer), but the code below should help you with your question Joel. This is designed to be run from PowerPoint, and will delete all of the sheets that the selected chart doesn't use. Porting this to Excel should be pretty straightforward, just make sure chart1 is the PowerPoint chart you just pasted in and not the Excel chart you copied over. In any event, be extra careful to make sure that the graphs are being pasted in with the data (as opposed to being linked to the original workbook), as this code will delete every extra sheet in whatever workbook the chart references.
This has not been tested thoroughly. Obviously, back everything up.
'Delete extra sheets of selected chart in PowerPoint
Sub delete_excess_sheets()
Application.DisplayAlerts = False
Dim chart1 As Chart, used_sheets As Collection
Set chart1 = ActiveWindow.Selection.ShapeRange(1).Chart
chart1.ChartData.Activate
chart1.ChartData.Workbook.Application.DisplayAlerts = False
'Get sheets being used by chart
Set used_sheets = find_source(chart1)
For Each sht In chart1.ChartData.Workbook.worksheets 'this only loops through worksheets, not worksheet-charts
'note that you might first copy/paste values of the sheet supporting the data, if that sheet itself refers to other sheets
If Not InCollection(used_sheets, sht.Name) Then
sht.Delete
End If
Next
Application.DisplayAlerts = True
chart1.ChartData.Workbook.Application.DisplayAlerts = True
End Sub
'Determine which sheets are being used by the chart
Function find_source(search_cht As Object) As Collection
Dim strTemp As String, sheet_collection As New Collection
For Each mysrs In search_cht.SeriesCollection
first_part = Split(Split(mysrs.Formula, "!")(0), "=SERIES(")(1)
If (InStr(first_part, "'") = 1 And Right(first_part, 1) = "'") Then first_part = Mid(first_part, 2, Len(first_part) - 2)
sheet_collection.Add first_part, first_part
Next
Set find_source = sheet_collection
End Function
'Determine if object is in a collection
Public Function InCollection(col As Collection, key As String) As Boolean
Dim var As Variant
Dim errNumber As Long
InCollection = False
Set var = Nothing
err.Clear
On Error Resume Next
var = col.Item(key)
errNumber = CLng(err.Number)
On Error GoTo 0
'5 is not in, 0 and 438 represent incollection
If errNumber = 5 Then ' it is 5 if not in collection
InCollection = False
Else
InCollection = True
End If
End Function