This gives a "Compile error: Syntax error". I believe the problem is in this area:

' loop the sheets
For Each objSheet In ActiveWorkbook.Worksheets If WorksheetFunction.Count(objSheet.UsedRange) > 0 Then
' Data in sheet so copy used range
objSheet.UsedRange[/COLOR][COLOR=#333333].CopyPicture Appearance:=xlScreen, Format:=xlPicture

I tried to split the code in half, but it gives "wrong number of arguments or invalid property assignment".

However, to get back to the topic, the first macro I posted of yours is working fine, which takes the arrays (per sheet) I selected. The only problem is that the report is a mix between tables and embedded charts in different sheets. The only thing the macro is currently missing is the fact that it doesn't take the graphs. I also tried to make them standalone, but without result unfortunately.