Today is the day I decided I had enough of Excel’s lack of a Paste Special shortcut key.
Pasting Annoyances
There are several ways to Paste Special via the keyboard but all of them involve multiple key press sequences. This may have been simple enough, but when the source of the copied content is from a source other than Excel the Paste Special dialogue box differs, and the last couple keys in the sequence differ as well.

Fig. 1 The Excel source Paste Special dialogue

Fig. 2 The Microsoft Word source Paste Special dialogue
To create a shortcut key for a function (that is not represented by a menu button) we must first create a macro for that function.
Macro Errors
A simple macro like:
Sub PasteVal() Selection.PasteSpecial Paste:=xlValues End Sub
works fine if you are copying cells from Excel or objects from Word, Outlook, etc. If you are copying text, from inside an Excel cell or elsewhere, you will get an error:

Fig. 3 Error pasting text from outside Excel into Excel
You may also get this error if you run the macro via the Developer -> Macros dialog box. So remember to run your macro via the shortcut, which we will create below.
Paste Special Macro
To create a macro that can handle pasting both types of data we can use an error catching routine. Also, since we now know that running a macro will clear the undo stack, we should include code that will give us some protection from pasting an erroneously.
' Custom data type for undoing Type SaveRange Val As Variant Addr As String End Type ' Stores info about current selection Public OldWorkbook As Workbook Public OldSheet As Worksheet Public OldSelection() As SaveRange '---------------------------------------------------------- Sub PasteValues() ' Set shortcut to Cntl+Shift+V, for example ' Works for Outlook and Chrome AND Excel ' Abort if a range isn't selected If TypeName(Selection) <> "Range" Then Exit Sub ' The next block of statements ' save the current values for undoing ReDim OldSelection(Selection.Count) Set OldWorkbook = ActiveWorkbook Set OldSheet = ActiveSheet i = 0 For Each cell In Selection i = i + 1 OldSelection(i).Addr = cell.Address OldSelection(i).Val = cell.Formula Next cell ' Start paste function On Error GoTo ValuesFail ' Works for Excel and Outlook, but not Chrome Selection.PasteSpecial Paste:=xlValues ' Specify the Undo Sub Application.OnUndo "Undo the macro", "UndoMacro" Exit Sub ValuesFail: On Error GoTo TextFail ' Works for Outlook and Chrome, but not Excel ActiveSheet.PasteSpecial Format:="Text" ' Specify the Undo Sub Application.OnUndo "Undo the macro", "UndoMacro" Exit Sub TextFail: On Error GoTo PasteFail ActiveSheet.Paste ' Specify the Undo Sub Application.OnUndo "Undo the macro", "UndoMacro" Exit Sub PasteFail: MsgBox "Complete Failure" End Sub '---------------------------------------------------------- Sub UndoMacro() ' Reinstates data in the selected range ' Tell user if a problem occurs On Error GoTo Problem Application.ScreenUpdating = False ' Make sure the correct workbook and sheet are active OldWorkbook.Activate OldSheet.Activate ' Restore the saved information For i = 1 To UBound(OldSelection) Range(OldSelection(i).Addr).Formula = OldSelection(i).Val Next i Exit Sub ' Error handler Problem: MsgBox "Can't undo macro" End Sub '---------------------------------------------------------- Sub RevertFile() ' From http://www.excelforum.com/showthread.php?t=491103 wkname = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name ActiveWorkbook.Close Savechanges:=False Workbooks.Open Filename:=wkname End Sub
The code above will allow you not only to paste both text and objects into Excel, it will also allow you to undo changes to data in the range selected for pasting. Even if you erroneously paste over needed data, you can run the RevertFile macro to reload your worksheet to its last saved state.
In case you would like to experiment more with what code works with what sources you can use the code below.
Sub PasteOutlook() ' Set shortcut to Cntl+Shift+B, for example ' Works for Excel and Outlook, but not Chrome Selection.PasteSpecial Paste:=xlValues End Sub '---------------------------------------------------------- Sub PasteExcelOnly() ' Set shortcut to Cntl+Shift+E, for example ' Works for Excel, but not Outlook or Chrome Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub '---------------------------------------------------------- Sub PasteChrome() ' Set shortcut to Cntl+Shift+C, for example ' Works for Outlook and Chrome, but not Excel ActiveSheet.PasteSpecial Format:="Text" End Sub
One more thing: save these macros in PERSONAL.XLSB so that your new Paste Special shortcut is available in all your spreadsheets.
I hope these macros will help you as much as they will me!