I think that may well be the issue, I have had issues like this in the past but all Excel side. Back then I used the same method to refresh the query before I then refreshed the pivot tables to create an all in one refresh scenario. Below is the code I used in case it is any help:
Sub RefreshQuery()
Application.ScreenUpdating = False With Sheet1.ListObjects("tbProjData")
.AutoFilter.ShowAllData
.QueryTable.Refresh BackgroundQuery:=False
.Sort.SortFields.Clear
.Range.AutoFilter 3, "<>"
End With
Sheet3.ListObjects("tbLastSaved").QueryTable.Refresh BackgroundQuery:=False
Sheet3.ListObjects("tbStandby").QueryTable.Refresh BackgroundQuery:=False
Sheet3.PivotTables("PivotTable1").PivotCache.Refresh
Sheet3.PivotTables("PivotTable2").PivotCache.Refresh
Sheet3.PivotTables("PivotTable3").PivotCache.Refresh
Sheet3.PivotTables("PivotTable4").PivotCache.Refresh
Application.ScreenUpdating = True
End Sub
Instead of updating pivots i suppose you would run your copy code.