Этот код работал для меня в одной ячейке (вдохновленный ответом @ Рика, но с небольшими изменениями, потому что Clipboard.SetDataObject(objData)
вызвал ошибку, а также objRange.PasteSpecial()
не работал):
Private Sub Worksheet_Change2(ByVal Target As Range, ByVal sht As Worksheet)
Dim objData As DataObject 'Set a reference to MS Forms 2.0'
Dim sHTML As String
Dim sSelAdd As String
Application.EnableEvents = False
objData = New DataObject
sHTML = Target.Text
objData.SetText sHTML
objData.PutInClipboard
sht.PasteSpecial Format:="Unicode Text"
Application.EnableEvents = True
End Sub
Sub test()
Dim rng As Range
Set rng = ActiveSheet.Range("F15") 'cell to change'
Worksheet_Change2 rng, ActiveSheet
End Sub
см. сообщение для более подробной информации
Я полагаю, не должно быть слишком сложно настроить его так, чтобы он работал для всего рабочего листа, а не только для одной конкретной ячейки, вам, вероятно, следует добавить условие if для переноса этого кода во избежание ошибок, см. этот пост для получения дополнительной информации