Windows版・Mac版のExcel VBAでクリップボードにテキストをコピーする方法。
DataObjectでクリップボードにテキストをコピーすると、Mac版だと文末にゴミ(¥0¥0
)が追加されたりするのでMacScriptを使う。
クリップボード設定
クリップボードを使うためにダミーの標準フォームを追加
※参照設定で「C:\WINDOWS\System32\FM20.DLL」を追加して「Microsoft Forms 2.0 Object Library」を参照設定したらMacのExcelで開けなかった
VBAソース
クリップボードにコピー
text = "test"
If Application.OperatingSystem Like "*Mac*" Then
' Is Mac.
text = Replace(text, "\", "\\")
text = Replace(text, Chr(34), "\" & Chr(34))
MacScript ("set the clipboard to " & Chr(34) & text & Chr(34))
Else
' Is Windows.
Dim CB As New DataObject
With CB
.SetText text
.PutInClipboard
End With
End If
参考
Office TANAKA:クリップボードを操作する(1)
Office TANAKA:MacScript関数
Excel for Windows および Excel for the Mac でプログラムによってファイルを選択する