Possível problema em relação à resposta de "user3616725":
Estou no Windows 8.1 e parece haver um problema com o código VBA vinculado da resposta aceita de "user3616725":
Sub CopyCellContents()
' !!! IMPORTANT !!!:
' CREATE A REFERENCE IN THE VBE TO "Microsft Forms 2.0 Library" OR "Microsft Forms 2.0 Object Library"
' DO THIS BY (IN VBA EDITOR) CLICKING TOOLS -> REFERENCES & THEN TICKING "Microsoft Forms 2.0 Library" OR "Microsft Forms 2.0 Object Library"
Dim objData As New DataObject
Dim strTemp As String
strTemp = ActiveCell.Value
objData.SetText (strTemp)
objData.PutInClipboard
End Sub
Detalhes:
Executando o código acima e colando a área de transferência em uma célula do Excel, recebo dois símbolos compostos de quadrados com um ponto de interrogação dentro, como este: ⍰⍰. Colar no bloco de notas nem mostra nada.
Solução:
Depois de pesquisar por algum tempo, encontrei outro script VBA do usuário "Nepumuk" que faz uso da API do Windows . Aqui está seu código que finalmente funcionou para mim:
Option Explicit
Private Declare Function OpenClipboard Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
Private Declare Function SetClipboardData Lib "user32.dll" ( _
ByVal wFormat As Long, _
ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32.dll" ( _
ByVal wFlags As Long, _
ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32.dll" ( _
ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32.dll" ( _
ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "kernel32.dll" ( _
ByVal hMem As Long) As Long
Private Declare Function lstrcpy Lib "kernel32.dll" ( _
ByVal lpStr1 As Any, _
ByVal lpStr2 As Any) As Long
Private Const CF_TEXT As Long = 1&
Private Const GMEM_MOVEABLE As Long = 2
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
Private Sub StringToClipboard(strText As String)
Dim lngIdentifier As Long, lngPointer As Long
lngIdentifier = GlobalAlloc(GMEM_MOVEABLE, Len(strText) + 1)
lngPointer = GlobalLock(lngIdentifier)
Call lstrcpy(ByVal lngPointer, strText)
Call GlobalUnlock(lngIdentifier)
Call OpenClipboard(0&)
Call EmptyClipboard
Call SetClipboardData(CF_TEXT, lngIdentifier)
Call CloseClipboard
Call GlobalFree(lngIdentifier)
End Sub
Para usá-lo da mesma forma que o primeiro código VBA acima, altere o Sub "Beispiel ()" de:
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
Para:
Sub CopyCellContents()
Call StringToClipboard(ActiveCell.Value)
End Sub
E execute-o através do menu de macro do Excel, conforme sugerido em "user3616725" a partir da resposta aceita:
De volta ao Excel, vá em Ferramentas> Macro> Macros e selecione a macro chamada "CopyCellContents" e escolha Opções na caixa de diálogo. Aqui você pode atribuir a macro a uma tecla de atalho (por exemplo, Ctrl + c para cópia normal) - usei Ctrl + q.
Então, quando você quiser copiar uma única célula para o Bloco de notas / qualquer lugar, basta fazer Ctrl + q (ou o que você escolher) e então fazer Ctrl + v ou Editar> Colar no destino escolhido.
Edit (21 de novembro de 2015):
@ comentário de "dotctor":
Não, essa pergunta realmente não é nova! Em minha opinião, é um bom acréscimo para a resposta aceita, pois minha resposta aborda problemas que você pode enfrentar ao usar o código da resposta aceita. Se eu tivesse mais reputação, teria criado um comentário.
@ comentário de "Teepeemm":
Sim, você está certo, as respostas que começam com o título "Problema:" são enganosas. Alterou para: "Possível problema em relação à resposta do" usuário3616725 ":". Como um comentário, certamente teria escrito de forma muito mais compacta.