2016-05-26 2 views
4

クリップボードから複数のアイテムを取得する方法はありますか?クリップボードのN番目のアイテムにアクセスする

Run-time error '-2147221404 (800040064)': 
    DataObject:GetText Invalid FORMATETC Structure 

はヘルプをはるかに高く評価されています。しかし、私は、次の言う私の第二の変数に値を代入エラーが出る

Dim clipboard As MSForms.DataObject 
Dim str1 As String 
Dim str2 As String 

Set clipboard = New MSForms.DataObject 

clipboard.GetFromClipboard 
str1 = clipboard.GetText(1) 
str2 = clipboard.GetText(2) 

:私はこのようなものを使用しています!

+0

これは本当にVBAですか、これをVB.NETで使用していますか? –

+0

@MacroMan Excelでこれをやっているので、はい、私はVBAを使っています。これはVBAでは不可能ですか? –

+0

エラーメッセージが標準のVBAエラーメッセージのように見えないため、私は尋ねます。 –

答えて

1

WindowsクリップボードとOfficeクリップボードの2つのクリップボードがあります。

Officeクリップボードは最大24個のアイテムを保持できます(すべて同じタイプです)。一方、Windowsクリップボードは各タイプのアイテムを1つしか保持できません。

  • Windowsクリップボードにコピーするのは、 Ctrl-Cと同じくらい簡単です。
  • Officeクリップボードへのコピーは、 と同じくらい簡単にCtrl-CCを押して強調表示します。少なくとも1つのOfficeアプリケーションが開いており、 の時間にアクティブな場合、Officeクリップボードは有効なのは です。

MSForms.DataObjectを使用すると、Windowsクリップボードにアクセスできるようになるため、利用できるテキスト項目は1つだけです。さまざまな検索の後、私はVBAのOfficeクリップボードを使用してオープン/コントロール/コピー/ペーストする方法を見つけることができません。

これまで述べてきたように、VBAマクロを作成して実行するときにクリップボードを使用する理由はほとんどありません。これらの値は、ワークシート、パブリック変数、パブリック・オブジェクト、またはプライベート変数(おそらく一般にアクセス可能なプロパティ)の未使用セルに格納できます。これらのメソッドはすべて、クリップボードにデータを格納するのとまったく同じ目的を果たします。

このトピックのinterwebzについては説明しませんでしたが、クリップボードを使用してさまざまなブック間、またはExcel-to-WordなどのOfficeアプリケーション間でデータをコピーする方法について、いくつか説明しました。 VBAはリモート/外部アプリケーション/ブック/文書を開き、データを直接コピー/貼り付けることができるため、これにクリップボードは必要ありません。

関連する問題