回答編集履歴

1

追記

2022/10/01 07:35

投稿

hatena19
hatena19

スコア33768

test CHANGED
@@ -12,3 +12,46 @@
12
12
  ただ、クリップボードのサイズがLong型より多い場合はどうなるかは試してません。
13
13
  たぶん、Long型のサイズに切り取られると思いますが。
14
14
 
15
+ おまけ
16
+ ---
17
+ ちなみに、クリップボードからテキストを取得したり、送ったりするなら、 APIを使わず MSForms.DataObject を使う方法があります。こちらの方が簡単だと思います。
18
+
19
+ [クリップボードとデータのやりとりをする:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug](https://www.moug.net/tech/exvba/0150091.html)
20
+
21
+ 上記はExcelのVBAですが、Access VBAでも使えます。
22
+ 上記を参考に、「Microsoft Forms 2.0 Object Library」に参照設定をします。
23
+
24
+ あとは、標準モジュールに下記のコードを記述します。
25
+
26
+ ```vba
27
+ Public Function GetClipboardText() As String
28
+ On Error GoTo ErrExit 'クリップボードにテキストデータがない場合のエラー対策
29
+ With New MSForms.DataObject
30
+ .GetFromClipboard '変数のデータをDataObjectに格納する
31
+ GetClipboardText = .GetText
32
+ End With
33
+ ErrExit:
34
+ End Function
35
+
36
+ Public Function SetClipboardText(ByVal sTextData As String) As Boolean
37
+ On Error GoTo ErrExit 'クリップボードにテキストデータがない場合のエラー対策
38
+ With New MSForms.DataObject
39
+ .SetText sTextData '変数の値をDataObjectに格納する
40
+ .PutInClipboard 'DataObjectのデータをクリップボードに格納する
41
+ SetClipboardText = True
42
+ End With
43
+ ErrExit:
44
+ End Function
45
+
46
+ Public Sub Test()
47
+ Dim s As String
48
+ s = "Test"
49
+
50
+ If SetClipboardText(s) Then MsgBox "クリップボードにテキストを格納しました。"
51
+
52
+ MsgBox "クリップボードのテキストは'" & GetClipboardText() & "'"
53
+
54
+ End Sub
55
+ ```
56
+
57
+