Application defined or object defined error

dpaton05

Well-known Member
Joined
Aug 14, 2018
Messages
2,038
Office Version
  1. 365
  2. 2016
Platform
  1. Windows
I have a procedure that runs
VBA Code:
Sub Western_header_footer()
Dim printWorksheet As Worksheet, logoShape As Shape, tempImageFile As String
Dim footshape As Shape, ACAWorksheet As Worksheet

        'The worksheet on which the print page setup will apply
        Set printWorksheet = ThisWorkbook.Worksheets("CSS_quote_sheet")
        'Set ACAWorksheet = ThisWorkbook.Worksheets("ACA_Quoting")
        'The sheet location and name of shape to be used in page setup
            
        Set logoShape = ThisWorkbook.Worksheets("sheet2").Shapes("ImgWestHeader")
        Set footshape = ThisWorkbook.Worksheets("sheet2").Shapes("ImgWestFooter")

        'Save the shape as a temporary image
        tempImageFile = Environ("temp") & "\image.jpg"
        Save_Object_As_Picture logoShape, tempImageFile
            With printWorksheet.PageSetup
                .CenterHeaderPicture.fileName = tempImageFile
                .CenterHeader = "&G"
            End With
        Kill tempImageFile
        
        tempImageFile = Environ("temp") & "\image.jpg"
        Save_Object_As_Picture footshape, tempImageFile
            With printWorksheet.PageSetup
                .CenterFooterPicture.fileName = tempImageFile
                .CenterFooter = "&G"
            End With
        Kill tempImageFile
    Worksheets("CSS_quote_sheet").Activate
    Range("B7").Value = "AngW"
End Sub


and when it gets to the save_object_as_picture procedure, the following will run,
VBA Code:
Private Sub Save_Object_As_Picture(saveObject As Object, imageFileName As String)

    Dim temporaryChart As ChartObject
    Application.ScreenUpdating = False
    saveObject.CopyPicture xlScreen, xlPicture
    Set temporaryChart = ActiveSheet.ChartObjects.Add(0, 0, saveObject.Width + 1, saveObject.Height + 1)
    With temporaryChart
        .Activate
        .border.LineStyle = xlLineStyleNone      'No border
        .Chart.Paste
        .Chart.Export imageFileName
        .Delete
    End With
    Application.ScreenUpdating = True
    Set temporaryChart = Nothing
End Sub

but the code will halt on the following line
VBA Code:
Set temporaryChart = ActiveSheet.ChartObjects.Add(0, 0, saveObject.Width + 1, saveObject.Height + 1)

The procedure copies a picture from sheet2 and puts it at the top of CSS_quote_sheet.

It used to work and I am not sure why it now gives me an application defined or object defined error.

Can someone help me please?
 

Some videos you may like

Excel Facts

Return population for a City
If you have a list of cities in A2:A100, use Data, Geography. Then =A2.Population and copy down.

sijpie

Well-known Member
Joined
Nov 1, 2008
Messages
3,734
Have you tried debugging?
When the code halts press on the debug button, to take you to the VBA.
Now use your mouse to hover over saveObject.Width. It should tell you the value. same for .Height

Now hover over Activesheet. It will probably say 'Object defined error'
Press Ctrl+G to go to the direct window
type: ?activesheet.name
press return. The name of the activesheet should appear below the line
 

Watch MrExcel Video

Forum statistics

Threads
1,123,346
Messages
5,601,079
Members
414,426
Latest member
fraru

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Top