Bar

Access 2013 「クリップボードにコピーされているデータが多すぎます」のメッセージを回避する方法

image
Microsoft Access 2013で作成したアプリに機能を追加した時のお話。
レコードを複製するマクロを実行した後、確認メッセージが毎回表示された事を回避する方法をメモ。
時間が経てば絶対に忘れる自信がある内容ですね・・・

コマンド ボタン ウィザードの[レコードの複製]を使ったところ・・・

Accessは簡単な帳票ツールとしてよく使います。
標準機能のコマンドボタンを配置するとclicked_event用テンプレートが表示され、任意の機能を割り当てられます。
image
ここまでは問題ありませんが、[レコードの複製]を選択し、実際に使うと
クリップボードにコピーされているデータが多すぎます。
データをクリップボードにコピーすると、オブジェクトに対する参照だけがコピーされます。
ソースドキュメントを閉じると、ソースからすべてのデータが張り付けられます。
データに量によっては、時間がかかる場合があります。
このデータをクリップボードに保存しますか?
2013-09-10_085722
のメッセージがコピー後の行う他動作時に毎回表示されます。
INSERT SELECTのクエリを作成した方が簡単だと思いましたが、「あえて」この状況からメッセージを出さない方法を調べて使ってみました。
先人の方々に感謝!
なお、Win32APIを使います。必ずmsdnで各内容を把握してから使いましょう。
クリップボードを空にする関数
Option Compare Database
Declare Function OpenClipboard Lib "User32" (ByVal hWnd As Long) As Long
Declare Function EmptyClipboard Lib "User32" () As Long
Declare Function CloseClipboard Lib "User32" () As Long
Public Function setEmtpyClipBoard()
    OpenClipboard (0&)
    EmptyClipboard
    CloseClipboard
End Function
マクロの登録
こんな感じです。
image
埋め込みマクロにマクロを追加
[レコードの複製]の埋め込みマクロを開き、最後部にマクロを追加
image


埋め込みマクロは一度も使ったことがなかったので、スマートさがないなと実感。
今のところ問題なく動作していますが、もう少し修行が必要かもしれませんね。。。
xxxClipboard関数のリファレンスとその他

まだまだ分からない事ばかりですな~精進精進・・・