Your original code basically uses the same method as this but looks a lot simpler. This seems to work.
Option Explicit
Sub Test()
Dim sht As Worksheet, shS As Worksheet
Dim TempFile As String
Application.ScreenUpdating = False
Set shS = ActiveSheet
Set sht = Sheets.Add(After:=shS)
shS.Range("E44:L46").Copy
sht.Pictures.Paste
TempFile = VBA.Environ$("temp") & "\" & "Etapa2.gif"
Call ExportPic(sht, TempFile)
Application.DisplayAlerts = False
sht.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Sub ExportPic(sht As Worksheet, fname As String)
'Based upon https://stackoverflow.com/questions/25333558/export-pictures-excel-vba
Dim MyChart As Chart
If InStr(sht.Shapes(1).Name, "Picture") > 0 Then
'create chart as a canvas for saving this picture
Set MyChart = Charts.Add
MyChart.Name = "TemporaryPictureChart"
'move chart to the sheet where the picture is
Set MyChart = MyChart.Location(Where:=xlLocationAsObject, Name:=sht.Name)
'resize chart to picture size
MyChart.ChartArea.Width = sht.Shapes(1).Width
MyChart.ChartArea.Height = sht.Shapes(1).Height
MyChart.Parent.Border.LineStyle = 0 'remove shape container border
'copy picture
sht.Shapes(1).Copy
'paste picture into chart
MyChart.ChartArea.Select
MyChart.Paste
'save chart as jpg
MyChart.Export fname, "gif"
'delete chart
sht.Cells(1, 1).Activate
sht.ChartObjects(sht.ChartObjects.Count).Delete
End If
End Sub