● Access2000Tips Win32 API クリップボードへ変数などの文字を送る、クリップボードの文字を取得する

この処理は、僕は(有)ロードシステム様のサンプルをそのまま使わせて頂いています。
このサイトは有益な情報がたくさんありますから、皆さんもぜひ見てみてください。

(有)ロードシステム様
http://www.loadsystem.jp/api/

http://www.loadsystem.jp/api/api15.htm の「Source」の内容・・・

http://www.loadsystem.jp/api/lsapi15.txt の内容を標準モジュールにコピペするだけで使えます。

Option Compare Database
Option Explicit
と書かれた先頭から、最後の行までをコピペします。

また、Excelで使いたい場合は、先頭行の「Option Compare Database」だけをカットしてOption Explicit の行以下すべてをコピペします。

Win10-1607+Access2000はもちろん、Win10-1703+Access2003 でも多分動作します。
(Win10-1703 は Access2000自体が正常に動かないのですが、多分使えます。mdbファイルを閉じた後、対応するAccessのプロセスをKillするプログラムを 作れば普通に使える気がしますが、それとは無関係にこのAPIは動くと思います。多分・・・(^^))

「Function ClipBoard_GetData()・・・・」のコードがクリップボードの文字列を取得するプログラムです。
「Function ClipBoard_SetData()・・・・」のコードがクリップボードの文字列を取得するプログラムです。

沢山の文字数をやりとりしたい場合は、プログラムの最初のほうの以下の行の「4096」という数字を「15000」とか「30000」とかに書き換えておきます。
クリップボードの文字数が多くて途中までしや取得できない場合や、変数に格納した文字の文字数が多すぎて、途中までしかクリップボードに送れないときなどに変えてください。

Public Const MAXSIZE = 4096

=========

● テスト方法

イミディエイトウィンドウで

ClipBoard_SetData("aaaaa")

と書いてEnterすれば、クリップボードに「aaaaa」という文字が送られます。

そしてその直後に、同じくイミディエイトウィンドウで

? ClipBoard_GetData

と書いてEnterすれば、先ほどクリップボードに送られた「aaaaa」という文字を取得できます(結果表示されます)。

もちろん、ClipBoard_SetData関数の引数はリテラル値じゃなくても変数でもOKです。

ClipBoard_SetData(変数名)

でも使えます。変数に文字列を格納した後、ClipBoard_SetData関数でその値をクリップボードに送れます。