アクセスvbaでクリップボードにコピーの動作を実行
- アクセス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です。 アクセスでは不可能と言うことでしょうか? ご教授よろしくお願いします。
- JMFPRAPPKWDIQ
- お礼率100% (55/55)
- オフィス系ソフト
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参照設定ができるのなら http://www.moug.net/tech/acvba/0020034.html こちらで紹介されてるようにできるはずですが Microsoft Forms 2.0 Object Libraryがないということですので (何かしらインストールの追加みたいなので追加できないでしょうか) こちらを参考にしてください。 http://www.tsware.jp/study/vol1/kaibo_15.htm
その他の回答 (1)
- mitarashi
- ベストアンサー率59% (574/965)
Microsoft Forms 2.0 Object Libraryの実体であるFM20.DLLの在処については、下記の方が新しいです。 そちらに参照設定して、Acc2010から使えています。 ご参考まで。 http://www.moug.net/tech/exvba/0150091.html
お礼
ありがとうございました。
関連する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
- ベストアンサー
- その他MS Office製品
- 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 ご存知の方がいらっしゃればご教授よろしくお願い致します。
- ベストアンサー
- Visual Basic
- ACCESSのVBAについて
アクセスのVBAでdatebaseやRecordsetが宣言できません。ヘルプでは【参照設定】でDate Access Objectをオンに指定ない場合は認識されずエラーになります と書いており、参照設定を見たのですがDate Access Objectという欄がありません、どうしたら宣言することができますか? 例)Dim db As Database Dim rsDate As Recordsetこれらがエラーになる。 大変困っています。ちなみにAccess2000です。
- ベストアンサー
- Visual Basic
- 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
- ベストアンサー
- Visual Basic
お礼
ありがとうございました。