web-dev-qa-db-ja.com

VBAでOfficeクリップボードをクリアする方法

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

あなたの状況のた​​めに働くか、このオプションは実行可能ではありませんか?

7
jtchase08

ここに私のために働いた解決策があります。これは、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を使用してそれをクリアします。

2
ChrisB

この機能は、ライブラリ「Microsoft Forms 2.0 Object Library」内に保持されています。そのライブラリにリンクするには、VBAエディターに移動し、次に[ツール]、[参照]に移動して、まだチェックされていない場合はリストから選択します。

一連のWinAPI呼び出しを使用して、よりファンキーなことを実行できますが、絶対に必要な場合を除いて、通常はそれらを回避することをお勧めします。

また、ダイアログボックスを非表示にするDisplayAlertsプロパティについても忘れないでください。ただし、常に目的の結果が得られるかどうかはわかりません。

1
NeepNeepNeep