user2140261 là giải pháp đúng:
How to: Send Information to the Clipboard
(Sau đây chỉ là sao chép từ các liên kết ở trên)
Nếu bạn cần phải sao chép nội dung của điều khiển hoạt động trên biểu mẫu hoặc báo cáo vào Clipboard, bạn chỉ cần mã này:
Private Sub cmdCopy_Click()
Me!txtNotes.SetFocus
DoCmd.RunCommand acCmdCopy
End Sub
Tuy nhiên, đây là sự thay thế cần thiết cho thói quen cũ của mình:
1. Tạo một module, đặt tên là "WinAPI" hoặc một cái gì đó, đặt mã này trong đó:
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Declare Function CloseClipboard Lib "User32"() As Long
Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long
Declare Function EmptyClipboard Lib "User32"() As Long
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Public Const GHND = &H42
Public Const CF_TEXT = 1
Public Const MAXSIZE = 4096
2. Trong mô-đun mà thói quen cũ của bạn được xác định, hãy thay thế thói quen cũ của bạn bằng mã này:
Function ClipBoard_SetData(MyString As String)
Dim hGlobalMemory As Long, lpGlobalMemory As Long
Dim hClipMemory As Long, X As Long
' Allocate moveable global memory.
'-------------------------------------------
hGlobalMemory = GlobalAlloc(GHND, Len(MyString) + 1)
' Lock the block to get a far pointer
' to this memory.
lpGlobalMemory = GlobalLock(hGlobalMemory)
' Copy the string to this global memory.
lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)
' Unlock the memory.
If GlobalUnlock(hGlobalMemory) <> 0 Then
MsgBox "Could not unlock memory location. Copy aborted."
GoTo OutOfHere2
End If
' Open the Clipboard to copy data to.
If OpenClipboard(0&) = 0 Then
MsgBox "Could not open the Clipboard. Copy aborted."
Exit Function
End If
' Clear the Clipboard.
X = EmptyClipboard()
' Copy the data to the Clipboard.
hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)
OutOfHere2:
If CloseClipboard() = 0 Then
MsgBox "Could not close Clipboard."
End If
End Function
3. Sau đó, gọi nó là như thế này:
' doesn't work on Windows 8: targetData.SetText "This is a plain text string"
'doesn't work on Windows 8: targetData.PutInClipboard
ClipBoard_SetData ("This is a plain text string")
Bạn đang sử dụng 64bit hoặc 32bit phiên bản của Office 2013? Tôi đã thử nghiệm trên bản sao của tôi của 64bit và không có bất kỳ vấn đề. (BTW mã của bạn có "=" trong đó nên ở đó;) – CuberChase
Tôi đang sử dụng Office chuyên nghiệp 64 bit cộng với Excel. Văn bản được đặt trong clipboard thông qua PutInClipboard, phương thức sẽ không dán bên trong hoặc bên ngoài Excel. Về kiểm tra dữ liệu clipboard nó thực sự có nhưng được phân loại là loại "Chuỗi hệ thống". Kiểu văn bản hiển thị "??" (hai dấu hỏi cạnh nhau). Loại Unicode có hai ký tự không thể in được. _Không biết tại sao tôi gõ vào dấu "=" nó sẽ là một lỗi biên dịch._ –
Đây là một vấn đề đã biết, cách giải quyết cho điều này đã được biểu diễn trong liên kết followig tới MSDN [Cách gửi: Gửi thông tin đến bảng tạm ] (http://msdn.microsoft.com/en-us/library/office/ff192913.aspx) – user2140261