Possibile problema in relazione alla risposta da "user3616725":
Sono su Windows 8.1 e sembra esserci un problema con il codice VBA collegato dalla risposta accettata da "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
Dettagli:
eseguendo il codice sopra e incollando gli appunti in una cella in Excel, ottengo due simboli composti da quadrati con un punto interrogativo all'interno, in questo modo: ⍰⍰. Incollare in Blocco note non mostra nemmeno nulla.
Soluzione:
Dopo aver cercato per un po 'di tempo ho trovato un altro script VBA dell'utente "Nepumuk" che utilizza l'API di Windows . Ecco il suo codice che finalmente ha funzionato per me:
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
Per usarlo allo stesso modo del primo codice VBA dall'alto, cambia il Sub "Beispiel ()" da:
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
Per:
Sub CopyCellContents()
Call StringToClipboard(ActiveCell.Value)
End Sub
Ed eseguilo tramite il menu macro di Excel come suggerito da "user3616725" dalla risposta accettata:
Di nuovo in Excel, vai su Strumenti> Macro> Macro e seleziona la macro chiamata "CopyCellContents", quindi scegli Opzioni dalla finestra di dialogo. Qui puoi assegnare la macro a un tasto di scelta rapida (ad esempio, come Ctrl + c per la copia normale) - Ho usato Ctrl + q.
Quindi, quando vuoi copiare una singola cella su Blocco note / ovunque, fai semplicemente Ctrl + q (o qualunque cosa tu scelga) e poi fai Ctrl + vo Modifica> Incolla nella destinazione scelta.
Modifica (21 novembre 2015):
@ commento da "dotctor":
No, questa non è davvero una nuova domanda! A mio parere è una buona aggiunta per la risposta accettata poiché la mia risposta affronta i problemi che puoi affrontare quando utilizzi il codice dalla risposta accettata. Se avessi più reputazione, avrei creato un commento.
@ commento da "Teepeemm":
Sì, hai ragione, le risposte che iniziano con il titolo "Problema:" sono fuorvianti. Modificato in: "Possibile problema in relazione alla risposta da" user3616725 ":". Come commento sicuramente avrei scritto molto più compatto.