VBA、特にWord VBAを使用してMicrosoft Officeクリップボードをどのようにクリアしますか?
大量のデータを一度にクリップボードにコピーしていますが、過剰なデータをクリップボードに保存したくありません。
これを別の投稿で見ました、そして私はそれをWord VBAでテストしました。
'Clearing the Office Clipboard
Dim oData As New DataObject 'object to use the clipboard
oData.SetText text:=Empty 'Clear
oData.PutInClipboard 'take in the clipboard to empty it
クリップボードをクリアする必要がある場合は、コードにコピーして貼り付けてください。
もう1つ気づいたのは、.Quit
プログラム、たとえばExcelは、データを保持するかどうかをクリップボードで尋ねてきます。回避策は、上記のコードを使用してクリップボードをクリアすることです。下記参照:
'Clearing the Office Clipboard
Dim oData As New DataObject 'object to use the clipboard
oData.SetText text:=Empty 'Clear
oData.PutInClipboard 'take in the clipboard to empty it
'You can also just remove the Alert Messages from the Excel Program while
'the code is running
'Remove alert Messages from the Excel Program when closing
ExcelProgram.DisplayAlerts = False
'Quiting the Excel Application
ExcelProgram.Quit
上記の例をVBAコードで使用して、Excelファイルからデータをインポートしました。 こちら を参照
簡単でしょう
Application.CutCopyMode = False
あなたの状況のために働くか、このオプションは実行可能ではありませんか?
ここに私のために働いた解決策があります。これは、Zack Barresseによる VBAexpress.com の投稿に基づいています。
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Sub ClearClipboard()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Sub
この関数をVBAプロジェクトにコピーした後、ClearClipboard
を使用してそれをクリアします。
この機能は、ライブラリ「Microsoft Forms 2.0 Object Library」内に保持されています。そのライブラリにリンクするには、VBAエディターに移動し、次に[ツール]、[参照]に移動して、まだチェックされていない場合はリストから選択します。
一連のWinAPI呼び出しを使用して、よりファンキーなことを実行できますが、絶対に必要な場合を除いて、通常はそれらを回避することをお勧めします。
また、ダイアログボックスを非表示にするDisplayAlertsプロパティについても忘れないでください。ただし、常に目的の結果が得られるかどうかはわかりません。