Whenever I had to build rough code for copying and pasting (probably even using SendKeys with Ctrl+C) I used the ActiveSheet. to avoid an error like you describe. Using .Sheet().Range() as usual doesn't seem to be sufficient in some cases - so the code basically looks like this:
ThisWorkbook.Sheets(1).Range("A1").Select
ActiveSheet.PasteSpecial Format:="HTML"
I know .Select shall be avoided, but however for me it turned out to run extremely robust just like this.
But using .GetFromClipboard is way more elegant and faster and (in case you emptied the clipboard right before) also can be used in a loop to check if copying was already completed and to wait as long as necessary. You should really check it out.