"user3616725"의 답변과 관련하여 가능한 문제 :
Windows 8.1의 Im이며 "user3616725"의 승인 된 답변에서 링크 된 VBA 코드에 문제가있는 것 같습니다.
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
세부:
위의 코드를 실행하고 클립 보드를 Excel의 셀에 붙여 넣으면 내부에 물음표가있는 사각형으로 구성된 두 개의 기호가 나타납니다. ⍰⍰. 메모장에 붙여 넣어도 아무것도 표시되지 않습니다.
솔루션 :
꽤 오랫동안 검색 한 후 "Nepumuk"사용자로부터 Windows API를 사용하는 또 다른 VBA 스크립트를 찾았습니다 . 마침내 나를 위해 일한 그의 코드는 다음과 같습니다.
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
위의 첫 번째 VBA 코드와 같은 방식으로 사용하려면 Sub "Beispiel ()"을 다음과 같이 변경합니다.
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
에:
Sub CopyCellContents()
Call StringToClipboard(ActiveCell.Value)
End Sub
그리고 수락 된 답변에서 "user3616725"에서 제안한 것처럼 Excel 매크로 메뉴를 통해 실행합니다.
Excel로 돌아가서 도구> 매크로> 매크로로 이동하고 "CopyCellContents"라는 매크로를 선택한 다음 대화 상자에서 옵션을 선택합니다. 여기에서 매크로를 바로 가기 키 (예 : 일반 복사의 경우 Ctrl + c)에 할당 할 수 있습니다. 저는 Ctrl + q를 사용했습니다.
그런 다음 단일 셀을 메모장 / 어디서나 복사하려면 Ctrl + q (또는 선택한 항목)를 수행 한 다음 선택한 대상에서 Ctrl + v 또는 편집> 붙여 넣기를 수행하십시오.
편집 (2015 년 11 월 21 일) :
"dotctor"의 @ 코멘트 :
아니요, 진지하게 새로운 질문이 아닙니다! 내 대답은 수락 된 답변의 코드를 사용할 때 직면 할 수있는 문제를 해결하기 때문에 수락 된 답변에 대한 좋은 추가입니다. 평판이 더 좋으면 댓글을 달았을 것입니다.
@ "Teepeemm"의 코멘트 :
예, 맞습니다. 제목 "문제 :"로 시작하는 답변은 잘못된 것입니다. 변경 : ""user3616725 "의 답변과 관련하여 가능한 문제 :". 코멘트로서 나는 확실히 훨씬 더 간결하게 작성했을 것입니다.