アクセスvbaでクリップボードにコピーの動作を実行

このQ&Aのポイント
  • アクセスvbaを使用してクリップボードにコピーの動作を実行したい場合、エクセルと異なりMicrosoft Forms 2.0 Object Libraryを参照設定することができません。これはアクセスのバージョンによる制約です。
  • エクセルのVBAでは、DataObjectオブジェクトを使用してクリップボードにデータをコピーすることができます。しかし、アクセスのVBAでは、参照設定で「Microsoft Forms 2.0 Object Library」が見つからないため、同じ方法を使用することはできません。
  • 代替策として、アクセスのVBAでは、クリップボードにデータをコピーするための別の方法を使用することが推奨されています。具体的な方法については、オンラインの資料やフォーラムを参考にしてください。また、アクセスのバージョンによっては、機能の制約がある場合もありますので、注意が必要です。
回答を見る
  • ベストアンサー

アクセスvbaでクリップボードにコピーの動作を実行

アクセスvbaでクリップボードにコピーの動作を実行したいです。 エクセルなら、 Sub test() Dim buf As String Dim CB As New DataObject buf = "test" With CB .SetText buf ''変数のデータをDataObjectに格納する .PutInClipboard ''DataObjectのデータをクリップボードに格納する .GetFromClipboard ''クリップボードからDataObjectにデータを取得する Debug.Print .GetText ''DataObjectのデータを変数に取得する End With End Sub これが実行できるのですが、 どうやらアクセスだと Dim CB As New DataObject これがエラーになるようです。 Dim CB As Objectにすると .SetText buf で実行時エラー91になります。 (「オブジェクト変数またはWithブロック変数が設定されていません」) http://officetanaka.net/excel/vba/tips/tips20.htm によると、 「DataObjectオブジェクトはMSFormsのメンバです。使用するには、Microsoft Forms 2.0 Object Libraryを参照設定します。または、ブックにUserFormを挿入すると自動的に参照設定されます。」 なので、アクセスvbaの参照設定で「Microsoft Forms 2.0 Object Library」を探したのですが、 ありませんでした。 当方バージョンは2010です。 アクセスでは不可能と言うことでしょうか? ご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

参照設定ができるのなら http://www.moug.net/tech/acvba/0020034.html こちらで紹介されてるようにできるはずですが Microsoft Forms 2.0 Object Libraryがないということですので (何かしらインストールの追加みたいなので追加できないでしょうか) こちらを参考にしてください。 http://www.tsware.jp/study/vol1/kaibo_15.htm

JMFPRAPPKWDIQ
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

Microsoft Forms 2.0 Object Libraryの実体であるFM20.DLLの在処については、下記の方が新しいです。 そちらに参照設定して、Acc2010から使えています。 ご参考まで。 http://www.moug.net/tech/exvba/0150091.html

JMFPRAPPKWDIQ
質問者

お礼

ありがとうございました。

関連するQ&A

  • エクセルVBAでセル範囲のデータをクリップボードに

    セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。 http://okwave.jp/qa/q5650002.html#16327676 の回答ANo2を見て Sub test01() Dim myData As DataObject Dim myCb As Variant Dim x x = "TESTデータです。" Set myData = New DataObject myData.SetText x myCb = myData.GetText myData.PutInClipboard End Sub は出来ました。 そこで、セル範囲A1:B3をクリップボードに貼ろうといろいろやってみました。 一応、下記でできましたが、実際にはもっと広い範囲を取り込みたいので、もっと簡単な方法はないでしょうか? Sub Clip() Dim myStr As String Dim myData As DataObject Dim myCb As Variant Set myData = New DataObject With Sheets(1) myStr = .Range("A1").Value & ":" & .Range("B1").Value & _ vbNewLine & .Range("A2").Value & ":" & .Range("B2").Value & _ vbNewLine & .Range("A3").Value & ":" & .Range("B3").Value End With myData.SetText myStr ', 1 myCb = myData.GetText If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If myData.PutInClipboard End Sub

  • Access VBA クリップボードの内容を

    Access2003 を使用しています。 クリップボードに取り込んだ商品名を、あるボタン(仮称:cmd01)を押せば A1 というデータに代入したいと思います。そのVBAの書き方を教えてください。 つまり Private Sub Cmd01_Click()     dim A1 as string     A1=(クリップボードに取り込んだ商品名) End Sub このようなイメージにしたいのですが・・・

  • 「クリップボードにコピーされているデータが多すぎます。」について

    大量なExcelデータを複写してAccessのテーブルに貼り付けてテーブルを 閉じたら以下のメッセージが表示されました。 「クリップボードにコピーされているデータが多すぎます。 データをクリップボードにコピーすると、オブジェクトに対する参照だけがコピーされます。 ソース ドキュメントを閉じると、ソースからすべてのデータが貼り付けられます。 データに量によっては、時間がかかる場合もあります。 このデータをクリップボードに保存しますか?」 どういう事で言っているのでしょうか? 説明して下さい。 宜しくお願いします。

  • Excelのマクロで選択範囲内の数値の合計をクリップボードにコピーする

    Excelのマクロで選択範囲内の数値の合計をクリップボードにコピーするマクロとして以下をメニューから呼び出せるようにしています。 が、呼び出すたびにエラーが出て、手動で「Microsoft Forms 2.0 Object Library」を参照設定しています。マクロ内で「Microsoft Forms 2.0 Object Library」を自動で参照設定ONにするようにはできないでしょうか。 --- Sub SumCopy() Dim MyData As DataObject Set MyData = New DataObject MyData.SetText Application.WorksheetFunction.Sum(Selection), 1 MyData.PutInClipboard End Sub ご存知の方がいらっしゃればご教授よろしくお願い致します。

  • ACCESSのVBAについて

    アクセスのVBAでdatebaseやRecordsetが宣言できません。ヘルプでは【参照設定】でDate Access Objectをオンに指定ない場合は認識されずエラーになります と書いており、参照設定を見たのですがDate Access Objectという欄がありません、どうしたら宣言することができますか? 例)Dim db As Database Dim rsDate As Recordsetこれらがエラーになる。 大変困っています。ちなみにAccess2000です。

  • Access97のVBAについて教えて下さい。

    Access97のVBAで、TableDef オブジェクトを作成したいのですが、 実行時に、「オートメーションエラー」になってしまいます。 Dim MyTable As TableDef (Dim MyTable As TableDefsも駄目でした。) 参照設定等で何か抜けがあるのでしょうか? どなたか、教えて下さい。宜しくお願い致します。

  • クリップボードにデータを送る(コピーする)には?

    vbaでクリップボードにデータを送る(コピーする)には? エクセルです。 Sub Macro() Selection.Copy End Sub で、クリップボードにデータを送ってることになりますよね? 「どこかのセルをコピーする」ではなく、例えば「abc」という文字をコピーさせて、 いつでも貼り付けられる状態にしたいのですが、vbaでそういうことは可能ですか? Sub Macro() "abc"をクリップボードに送る End Sub 的な事がしたいです。

  • Access VBAでクリップボード操作

    Accessでクリップボードの操作をしていますが、クリップボード内にデータがあるかないかのチェック方法がわかりません。 ExcelではApplication.ClipboardFormatsが使えるようですが、Acessにはありません。 Accessの場合、エラーを判定しエラーコードで後処理をするサンプルがありましたがそれ以外は方法がないものでしょうか?

  • Excel2003VBAでクリップボードにあるビットマップの操作について

    Excel2003VBAにおいてクリップボードにあるビットマップの画像の任意の1pxの色を、 ペイントのスポイトツールのように取得するマクロを作成したいのですが GetPixelという関数で画像の任意1pxの色を取得できる所までは調べられたのですが、 それをクリップボードの画像で使用することができませんでした。 以下は、GetPixel関数を試してみた時のソースになります。 '------------------------------------------------------------------ Option Explicit Declare Function GetDesktopWindow Lib "user32" () As Long Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long) As Long Sub ピクセル色獲得() Dim hwnd As Long Dim hdc As Long hwnd = GetDesktopWindow() hdc = GetWindowDC(hwnd) Debug.Print Hex(GetPixel(hdc, 100, 200)) End Sub '------------------------------------------------------------------ 上記ソースで任意1pxの色を取得できたため クリップボードの画像の色を取得するマクロを下記のように作成しました。 '--------------------------------------------------------------- Option Explicit Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long) As Long Sub クリップボードピクセル色獲得() Dim CB As Variant Dim i As Long CB = Application.ClipboardFormats Debug.Print Hex(GetPixel(CB, 100, 200)) End Sub '--------------------------------------------------------------- 型が一致しません と言われ動きません。 以上です、よろしくお願いいたします。

  • EXCEL/VBA 変数の値をクリップボードにコピーする方法

    EXCEL/VBAで、変数Xの値をクリップボードにコピーする方法を教えて貰えませんか。下記のように変数Xを一度セルに代入すると出来ますが、変数Xを直接クリップボードにコピーする方法が分かりません。 宜しく、お願いします。 Range("a1") = X Range("a1").Copy

専門家に質問してみよう