参照設定
- Microsoft Forms 2.0 Object Library
- 参照設定から「C:\Windows\SysWOW64\FM20.DLL」を選択すると上記参照が追加される。(デフォルトで選択肢に表示されない。)
クリップボードから文字列を取得
Public Sub SetClipboardData(t As String)
Dim dObj As New DataObject
Call dObj.GetFromClipboard
GetClipboardData = dObj.GetText
Set dObj = Nothing
End Sub
クリップボードへ文字列を設定 (半角のみ)
Public Sub SetClipboardData(t As String)
Dim dObj As New DataObject
dObj.SetText (t)
Call dObj.PutInClipboard
Set dObj = Nothing
End Sub
- 全角を設定した場合クリップボードにうまく設定されない。全角を設定したい場合は以下を用いる。
クリップボードへ文字列を設定 (全角対応)
Public Sub SetClipboardViaTextbox(t As String)
'クリップボードに文字列を格納
With CreateObject("Forms.TextBox.1")
.MultiLine = True ' 改行が入らない場合は設定不要(デフォルトでfalse)
.text = t
.SelStart = 0 ' コピー開始文字位置
.SelLength = .TextLength ' コピー対象文字長
.Copy
End With
End Sub
- やっていること(テキストボックスを作成)とやりたいこと(クリップボードに文字列を設定)が異なるのはあまり良くないですが、他のサイト様ではWin32APIをゴリゴリに呼び出していて少し複雑そうなので…
- なにより職場でネットサーフィン禁止なのでこのくらいシンプルでないと覚えられない…
参考文献
EXCEL VBAのクリップボード 文字化け問題とプリンタ名が頻繁に変わる問題を解決
【ExcelVBA入門】クリップボードを使ったデータの設定・取得方法とは