Sự cố có thể xảy ra liên quan đến câu trả lời từ "user3616725":
Tôi đang sử dụng Windows 8.1 và có vẻ như có vấn đề với mã VBA được liên kết từ câu trả lời được chấp nhận từ "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
Chi tiết:
Chạy mã trên và dán khay nhớ tạm vào một ô trong Excel, tôi nhận được hai biểu tượng bao gồm các hình vuông với dấu chấm hỏi bên trong, như sau: ⍰⍰. Dán vào Notepad thậm chí không hiển thị bất cứ điều gì.
Giải pháp:
Sau khi tìm kiếm khá lâu, tôi đã tìm thấy một tập lệnh VBA khác từ người dùng "Nepumuk" sử dụng API Windows . Đây là mã của anh ấy cuối cùng đã làm việc cho tôi:
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
Để sử dụng nó theo cách tương tự như mã VBA đầu tiên ở trên, hãy thay đổi Sub "Beispiel ()" từ:
Public Sub Beispiel()
Call StringToClipboard("Hallo ...")
End Sub
Đến:
Sub CopyCellContents()
Call StringToClipboard(ActiveCell.Value)
End Sub
Và chạy nó qua menu macro Excel như được đề xuất từ "user3616725" từ câu trả lời được chấp nhận:
Quay lại Excel, đi tới Công cụ> Macro> Macros và chọn macro có tên "CopyCellContents" rồi chọn Tùy chọn từ hộp thoại. Ở đây bạn có thể gán macro cho một phím tắt (ví dụ như Ctrl + c cho bản sao thông thường) - Tôi đã sử dụng Ctrl + q.
Sau đó, khi bạn muốn sao chép một ô sang Notepad / ở bất kỳ đâu, chỉ cần thực hiện Ctrl + q (hoặc bất cứ điều gì bạn chọn) rồi thực hiện Ctrl + v hoặc Chỉnh sửa> Dán vào điểm đến đã chọn của bạn.
Chỉnh sửa (ngày 21 tháng 11 năm 2015):
@ bình luận từ "dotctor":
Không, đây thực sự không phải là câu hỏi mới! Theo tôi, đó là một bổ sung tốt cho câu trả lời được chấp nhận vì câu trả lời của tôi giải quyết các vấn đề mà bạn có thể gặp phải khi sử dụng mã từ câu trả lời được chấp nhận. Nếu tôi muốn có thêm danh tiếng, tôi đã tạo ra một bình luận.
@ bình luận từ "Teepeemm":
Vâng, bạn nói đúng, các câu trả lời bắt đầu bằng tiêu đề "Vấn đề:" là gây hiểu lầm. Đã thay đổi thành: "Sự cố có thể xảy ra liên quan đến câu trả lời từ" user3616725 ":". Như một nhận xét chắc chắn tôi sẽ viết cô đọng hơn nhiều.