• ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

APIを使う方法 http://support.microsoft.com/kb/210216 Microsoft Forms に参照設定して・・の方法 http://www.moug.net/tech/acvba/0020034.html もっとお手軽?に Private Sub Cmd01_Click() Dim Clip As Object     dim A1 as string Set Clip = CreateObject( "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") Clip.GetFromClipboard A1 = Clip.GetText Msgbox A1 Clip.SetText "二回目" Clip.PutInClipboard A1 = Clip.GetText Msgbox A1 Set Clip = Nothing End Sub では。

Star-X
質問者

お礼

ありがとうございました。 完璧に希望通りに動きました。

関連するQ&A

  • Access クリップボードにデータが無い場合無視

    Access2000 クリップボードでテキストデータのコピー & 貼付をやりたいのですが、下記コードの場合、クリップボードにデータが無いとエラーしてしまいます。(貼付) クリップボードにデータが無い場合は無視するコードを教えて下さい。 Private Sub コマンド_Click() Me.テキスト.SetFocus DoCmd.RunCommand acCmdPaste End Sub

  • アクセス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です。 アクセスでは不可能と言うことでしょうか? ご教授よろしくお願いします。

  • access VBAでのファイル読み込みとその保存方法

    昨日も質問させていただいたVBA初心者です。 いろいろ調べましたが解決しなかったので、 またまた質問させていただきます。 ファイルを読み込んで、それを別ファイルに保存したいのですが、 下記ですと、1行のみ保存されるだけでした。 この方法ですと、すべて保存されるはずと書かれていたのですが。 全くどこが悪いのか分かりません、よろしくお願いします。 Private Sub cmd_Click() On Error GoTo Err_cmd_Click Dim ReadFileName As String Dim Contents As String Dim WriteFileName As String ReadFileName = "P:\dl_engine\logs1\service\20020223" ' ファイルを読み込む Open ReadFileName For Input As #1 Input #1, Contents Close #1 WriteFileName = "C:\Contents\data\Melody.csv" ' ファイルに保存 Open WriteFileName For Output As #2 Write #2, Contents Close #2 '正常終了 Exit_cmd_Click: Exit Sub 'エラー処理 Err_cmd_Click: Beep Select Case Err.Number Case Else MsgBox Err.Number & ":" & Err.Description End Select Resume Next End Sub

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

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

  • クリップボードの中身を判別

    PHPなどは理解しておりますが、VBに関してはまったく素人で何もわからないものです。 今回、クリップボードの中身を常に監視して、ある文字列が含まれていたらそのまま、それ以外の文字列の場合は空にするアプリが必要になりました。 そこでネットでいろいろ探して次のように作りました。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'クリップボードの文字列データを取得する Dim ClipBoardValue As IDataObject Dim ClipBoardString As String Dim okng As Boolean Do 'クリップボードのデータを取得() ClipBoardValue = Clipboard.GetDataObject ClipBoardString = ClipBoardValue.GetData(DataFormats.Text).ToString okng = ClipBoardString.Contains("反応あり") If (okng) Then 'クリップボードに文字列をコピーする Clipboard.SetDataObject("反応あり") Else Clipboard.SetDataObject("") End If Loop End Sub End Class 一つのフォームにボタンを一つ設置し、起動したら監視開始、ボタンをクリックしたら終了という形にしています。 動作させると、以下の問題があります。 ・どんな文字をコピーしてもすぐ空になってしまう ・フォームが表示されない ・起動時にクリップボードの中身が空だとエラーが表示される (オブジェクトのインスタンスにはnewを使用しろとかなんとか。。。) 正しい動作をするコードを教えていただけないでしょうか。 よろしくお願い致します。

  • access2000のVBAのことで教えてください。

    プログラム初心者でプログラム作った方がいきなり辞めてしまって困ってます。 市販の本とか見ても解りませんし、質問の仕方も良くわかりませんが 教えてください。 マクロの項目には何も無くマウスクリック時のイベントプロシージャでボタンを作ってるようです。 下記のプログラムですがクエリどこの命令文なるのですか? Private Sub 顧客名検索_Click() On Error GoTo Err_顧客名検索_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = \"F_顧客名検索\" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_顧客名検索_Click: Exit Sub Err_顧客名検索_Click: MsgBox Err.Description Resume Exit_顧客名検索_Click End Sub

  • VBAのlistboxについて

    今日は なんでVBAにリストボックスのクリックエベントは動かないのですか。 Private Sub 科目マスタリスト_Click() Dim aa As String aa = 科目マスタリスト.List(1) End Sub debugのとき、eventは反応できない。

  • アクセスVBA 変数を渡したい

    フォーム1のcmd_ボタンをクリックして、フォーム2を開く際に、変数を渡したいのですが、どう渡せばいいのでしょうか? Private Sub cmd_ボタン_Click() myStr = "あああ" DoCmd.OpenForm "フォーム2" (myStr) End Sub とすると、エラーになります。 文の書き方を教えてください。

  • エクセル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

  • アクセスにて検索フォームを作りたい

    お世話になります。 アクセス初心者です。 会社名検索フォームに会社名を入力して表示コマンドをクリックすると 会社フォームの入力した会社が表示されるようにしたいのです。 現在は、表示コマンドをクリックすると会社フォームが開きます。 どの会社名を打ち込んでもNo.1のレコードしか開きません。 つまり会社フォームが開く という指示をしているだけです。 コードなど全く分かりません。 ただ、本を見て真似て下記の通り入力してみました。 間違っているor足りない ということはわかっていますが、 どう入力すれば良いのかわかりません。 教えて下さい。よろしくお願いいたします。 Private Sub cmd表示_Click() On Error GoTo Err_cmd表示_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "会社フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd表示_Click: Exit Sub Err_cmd表示_Click: MsgBox Err.Description Resume Exit_cmd表示_Click End Sub

専門家に質問してみよう