クリップボードの中身をペーストしたいと思っています。
テキストをクリップボードに写して
それをテキストボックスに入れたいのですが、
どうすればいいのでしょうか?
記述の仕方がよくわかりません。
教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんな感じでどうでしょうか。



フォームにテキスト1と2、ボタン1と2を貼って下さい。
注意事項ですが、クリップボードは一端クリアしないと、
テキストが正しく入らないみたいです。そうしないと、
一端メモ帳を経由しなくてはならなくなるようです。

関数のオプションについては、VBのヘルプを参照して下さい。

Private Sub Command1_Click()
Clipboard.Clear
Clipboard.SetText Text1.Text
End Sub

Private Sub Command2_Click()
Text2.Text = Clipboard.GetText
End Sub
    • good
    • 0
この回答へのお礼

即効での解答どうもありがとうございました。
gettextでよかったんですね。
PASTEを使うのかとおもって
ずっとMSDNとにらめっこしてました(笑)
おかげで貼り付けOKです。
どうもありがとうございました。

お礼日時:2001/03/24 13:45

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpascalでのクリップボードの使い方

pascalであらかじめ用意してある文章をクリップボードを利用して、他の場所に貼り付けができるようにするプログラムを作くろうと思っているのですが少しうまい具合にいかなくて困っています。
文章をコピーするときなのですがeditなどの一列の文はクリップボードのClipboard.AsTextで出来たのですが、memoのような改行されるようなものが出来ませんでした。改行される文をクリップボードに移したいときはどうすればよいでしょうか?

Aベストアンサー

Memo1.SelectAll;
Memo1.CopyToClipboard;

でどうでしょう。全て選択された状態になってしまいますが。

Qテキストボックスに入力された内容をクリップボードにコピー

プログラミング初心者です。少し教えていただけないでしょうか?
3*3で配置したテキストボックスに入力された内容をクリップボードにコピーするツールを作ろうと思っています。

 受付番号  名前    備考
1[TextboxA1][Textbox12][Textbox13]
2[TextboxA2][Textbox22][Textbox23]
3[TextboxA3][Textbox32][Textbox33]

[実行ボタン]

受付番号は入力の簡素化のため"No."という文字列を入力したいと思っています。もっと効率的な方法があると思いますが
実行ボタンを押したときに下記のプログラムを実行すれば
一応クリップボードにコピーできることが分かりました。
Dim MsgAll as string
MsgALL = "No." & Textbox1.text & Textbox12.text & Textbox13.text & vbCrLf &TextboxA2.text (以下Textbox33.textまで)
Clipboard.SetDataObject(MsgAll)

ただし、3*3のテキストボックスは必ずしも全て入力されるわけではないので空白行の場合はその行をジャンプしたいのです。
各行の受付番号のテキストボックスに入力があるかどうかを判断させて空白だった場合はクリップボードにコピーさせなければよいのでは?と考えています。
色々ネットで調べた結果あらかじめ各行の内容を配列に代入しておき、
テキストボックスのコントロール名を取得してFOR文で処理を繰り返す方法を考えました。

lines(1) = "No." & TextboxA1.text & Textbox12.text & Textbox13.text & vbCrLf
lines(2) ="No." & TextboxA2.text & Textbox22.text & Textbox23.text & vbCrLf
lines(3) ="No." & TextboxA3.text & Textbox32.text & Textbox33.text & vbCrLf
 For i = 1 To 3
  ControlName = "TextBox_top" & i
  If Me.Controls(ControlName).Text = "" Then
   Else
    MsgAll = MsgAll + lines(i)
    Clipboard.SetDataObject(MsgAll)
End If
Next

以上のようなプログラムで動くかどうか不安でしたので
新たにプロジェクトを作り直し試みたところ動作したので
ほんとうのプログラムにこの部分のロジックを組み込んで動作させたところ
”オブジェクト参照がオブジェクト インスタンスに設定されていません。”のエラーが返り正常に動作しませんでした。
テキストボックス名などがテストプログラムなどとは異なりますが
他に異なる部分はありません。
なぜこのようなエラーが発生してしまうのでしょうか?

また、もっと効率のよい方法がある場合はその方法もご教示願えないでしょうか?
大変お手数ですがよろしくお願いいたします。

プログラミング初心者です。少し教えていただけないでしょうか?
3*3で配置したテキストボックスに入力された内容をクリップボードにコピーするツールを作ろうと思っています。

 受付番号  名前    備考
1[TextboxA1][Textbox12][Textbox13]
2[TextboxA2][Textbox22][Textbox23]
3[TextboxA3][Textbox32][Textbox33]

[実行ボタン]

受付番号は入力の簡素化のため"No."という文字列を入力したいと思っています。もっと効率的な方法があると思いますが
実行ボタンを押したときに下記のプログラ...続きを読む

Aベストアンサー

For i = 1 To 3
'ControlName = "TextBox_top" & i.ToString
If lines(i) = "No." & vbCrLf Then
Else
MsgAll = MsgAll + lines(i)
End If
Next
Clipboard.SetDataObject(MsgAll)

QCLCLというクリップボード拡張ソフトの使い方

ダウンロードしてみたのですが、さっぱり使い方がわかりません。
使い方の書いてあるHPなどないでしょうか?

説明書を読んだのですが、なんというか妙にマニア向けなのか、
半分も意味がわかりません。恥ずかしながら。
ネットでも使い方を調べたのですが、もうさっぱりです。
詳しい人に人気があるみたいで、他の同種類のソフトは使い方はすぐわかるのですが、これだけさっぱりわかりません。なんか急に頭悪くなったのかも・・。
ソフトに求める機能上、最前面表示と、コピー順に上から並べる機能を兼ね備えてるのがこれだけみたいので何とか使いたいのですが。
拡張機能はあとからでいいのですが、基本的な使い方がわかりません。
ということで、
詳しいかたおられたら、使い方の書いてあるページがあれば教えてください。お願いします。

Aベストアンサー

もっとも基本的な使い方は
1) 起動するとタスクバーにクリップのアイコンが表示されます。
2) そのアイコンを右クリックすると「メニュー」が表示されます。
3) CLCLを起動していた時にクリップボードにコピーされたデータが並んでいますから、
  貼り付けたいところにデータをクリックすると貼り付けられます。

スタートアップファイルに登録しておくと良いでしょう。

細かな機能について、わかりやすい解説を探したのですが、
残念ながら見つかりませんでした。
少しずつ試行錯誤しながら覚えるしかありませんね(^^;)
DLしたファイルのreadme.txtを熟読してみてください。
使えるようになれば、手放せなくなる便利なソフトです。

参考URL:http://blog.webcreativepark.net/2007/08/30-221553.html

QWSHでクリップボードにイメージファイルのwidth×height等をクリップボードに送りたい

WSHで画像ファイル情報をHTMLに整形してクリップボードに送りたいです。

エクスプローラでjpg/gif/pngを右クリックしたときだけ
コンテキストメニューに「タグ取得」みたいなメニューが出てきて
それをクリックすると、クリップボードにとりあえず
<img src="imgname.gif" width="xxx" height="xxx" alt="imgname.gif">
というタグを送りたいです。

jpg/gif/pngを右クリックしたときのコンテキストメニューへの「タグ取得」の追加はContexterでやります。
http://pasokon-yugi.cool.ne.jp/~ko-ichi/

当方の環境は、WindowsXP(SP2)、.NET Framework 3.0などです。
よろしくお願い致します

Aベストアンサー

Windows XPでしたらイメージファイルのwidth×heightをプロパティから求められます。

拡張ファイル プロパティの取得
http://www.microsoft.com/japan/technet/scriptcenter/scripts/storage/files/stfivb32.mspx

上記を参考にファイルをドロップすると大きさを表示するWSH VBSciptを書いてみました。

-----
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
if (WScript.Arguments.Count <> 1) then
WScript.Echo "画像ファイルを一つだけドロップして下さい。"
WScript.Quit
end if
strFName = WScript.Arguments(0)
Set sh = CreateObject("Shell.Application")
Set ns = sh.Namespace(Fs.GetParentFolderName(strFName))
Set f = ns.ParseName(Fs.GetFileName(strFName))
strW = ns.GetDetailsOf(f,27)
strH = ns.GetDetailsOf(f,28)
if strW <> "" then
WScript.Echo """" & strFName & """ の大きさは " & strW & " × " & strH
else
WScript.Echo """" & strFName & """ は画像ファイルではないようです。"
end if
-----

次の関門は、WSH自身にはクリップボードを操作する機能がないことです。これについては外部プログラムを利用します。例えばAutoItX.dllのClipPutが使えます。

AutoIt v3 - Automate and Script Windows Tasks - For Free!
http://www.hiddensoft.com/AutoIt/

Windows XPでしたらイメージファイルのwidth×heightをプロパティから求められます。

拡張ファイル プロパティの取得
http://www.microsoft.com/japan/technet/scriptcenter/scripts/storage/files/stfivb32.mspx

上記を参考にファイルをドロップすると大きさを表示するWSH VBSciptを書いてみました。

-----
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
if (WScript.Arguments.Count <> 1) then
WScript.Echo "画像ファイルを一つだけドロップして下さい。"
WScript.Quit
end...続きを読む

Qワードの使い方

ワード200です。
クリップボードの使い方です。
クリップボードに「全てクリア」というボタンはあるのですが、一部をクリアしたいときのボタンはありません。
一部(たとえば、3つコピーしているものがあったとして、ひとつを)クリア(削除)したいときはどうするのですか?

Aベストアンサー

たぶん最近のマシンをお使いでしょうから、クリップボードに少々溜まっても、放置しておいて何ら問題はありません。

それに、いちいちクリアせずとも、ワードなどを終了させたときに、クリップボードに大きなデータがあれば、消してよいかを聞いてきます。

クリップボードとは、その名のとおり、文章や画像などをほかの場所にコピーするとき、一時的においておく場所と考えてください。

Qリッチテキストボックスとテキストボックスの違い

VB6のリッチテキストボックスとテキストボックス
の違いは何なんでしょうか?

Aベストアンサー

RichTextだと扱えるファイルサイズが大きくなり
プロパティの指定が可能になります。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsrichtextboxclasstopic.asp

QWordのクリップボード

Wordで文字列をコピー(メニュー「編集」-コピー や Control+C)を行うと、
クリップボードに入ります。

しかし、コピーしてすぐ貼り付けを行うときでもクリップボードに入ります。

クリップボードにたくさんアイテム(文字列)が入っていると うざったいので、
できればコピー後すぐ貼り付けるものはクリップボードに入れたくないのですが、
クリップボードに入れるものとそうでないものを分けるにはどうすればよいですか。

また、クリップボードに入っているアイテムのうちの一部のみを消去する(選んだものだけクリア)にはどうすればよいですか。


Word2000です。

Aベストアンサー

こんにちは。

>長い間とっておいて繰り返し貼り付けるものはクリップボードに入れて、
>すぐ貼り付けて後で貼り付ける予定のないものはクリップボードに入れないようにするにはどうすればよいのか

他の方の回答にもあるとおり、クリップボードは、あくまでも「一時的な」記憶領域としてもうけられたものです。

ですからクリップボードの内容を、ユーザーが意識して管理するという使い方は、はじめから想定されていないと思います。


しかしクリップボードでそれを実現できなくても、
似たような機能が、
アプリケーションにいくつか装備されていると思います。

たとえばWordで、よく使う単語や文章があるのであれば、
IMEに「単語登録」するなり、
「定型句」として登録しておけば、
いくらかましになるのではないかと思います。

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

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を使用しろとかなんとか。。。)

正しい動作をするコードを教えていただけないでしょうか。
よろしくお願い致します。

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, B...続きを読む

Aベストアンサー

タイマーを配置し、EnabledをTrueにした上で、
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim target As String = "ある文字列"
If Not String.IsNullOrEmpty(Clipboard.GetText) Then
If Not Clipboard.GetText.Contains(target) Then
Clipboard.Clear()
End If
End If
End Sub
これで動きます。

>どんな文字をコピーしてもすぐ空になってしまう
再現しないので原因不明ですが、Clipboard.SetDataObject("反応あり")は不要だと思います。

>フォームが表示されない
Page_Loadが無限ループで終了しないからです。

>起動時にクリップボードの中身が空だとエラーが表示される
「ClipBoardValue.GetData(DataFormats.Text).ToString」のClipBoardValue.GetData(DataFormats.Text)がNothing(VBでのnull)を返しているためです。
ToStringを呼ぶ前にNullチェックが必要です。

タイマーを配置し、EnabledをTrueにした上で、
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim target As String = "ある文字列"
If Not String.IsNullOrEmpty(Clipboard.GetText) Then
If Not Clipboard.GetText.Contains(target) Then
Clipboard.Clear()
End If
End If
End Sub
これで動きます。

>どんな文字をコピーしてもすぐ空になってしまう
再現...続きを読む

Qクリップボードの中身は、どうやって見るのですか?

 クリップボードは、蓄積されるのですか?例えば、「コピー」をしてそのままにしておくとクリップボードに残っているのですか?
 クリップボードの中身が見たいのです。

Aベストアンサー

クリップボード関連のユーティリティなどをインストールしていない限り、何かをクリップボードにコピーするとそれまでにクリップボードに入っていたものは失われます。そうしてクリップボードに入ったものは、別な何かがクリップボードにコピーされるか、あるいはWindowsが終了するまで(再起動/ログオフなど)、そのまま内容が保持されます。

WindowsXP,2000などであれば、

スタートボタン→ファイル名を指定して実行→clipbrd

とすると、その段階でクリップボードに入っている内容が見れますよ。

Qテキストボックスに記述した数値を加算させたい

コントロール配列にしたテキストボックスに数値を入力し、その数値に金種(10000円、5000円、1000円・・・)を乗算します。
そこで得られた結果を足して、ラベルに表示させたいと思っています。
現在、テキストボックスに数値を入れると
・小さい数値ならば、うまく加算できる
・大きい数値ならば、オーバーフローする
・何も記述しない(空白)とエラーがデータ型が違うという、エラーがでる

といった状態です。何がおかしいのか頭を悩ませていますので、アドバイスをお願いします。
***********************************************
For i = 0 To 8
Maisuu(i) = Val(txtKinsyu(i).Text)
Next i

lngGoukei = Maisuu(0) * 10000 + Maisuu(1) * 5000 + Maisuu(2) * 1000 _
+ Maisuu(3) * 500 + Maisuu(4) * 100 + Maisuu(5) * 50 _
+ Maisuu(6) * 10 + Maisuu(7) * 5 + Maisuu(8) * 1

lblGoukei.Caption = lngGoukei
***********************************************

コントロール配列にしたテキストボックスに数値を入力し、その数値に金種(10000円、5000円、1000円・・・)を乗算します。
そこで得られた結果を足して、ラベルに表示させたいと思っています。
現在、テキストボックスに数値を入れると
・小さい数値ならば、うまく加算できる
・大きい数値ならば、オーバーフローする
・何も記述しない(空白)とエラーがデータ型が違うという、エラーがでる

といった状態です。何がおかしいのか頭を悩ませていますので、アドバイスをお願いします。
**********************...続きを読む

Aベストアンサー

この場合 Dim文で変数をLong(16桁数値)に宣言します。
それとテキストボックスが空白かどうかの判断をします。
IF文を追加しました。しかしまだ問題があります。
テキストに数字以外が入力された時はエラーになりそうですが...ここまででテストしてみて下さい。

Dim Maisuu(8) ,IngGoukei as Long

For i = 0 To 8
'テキストボックスが空白でない場合
If Len(txtKinsyu(i).Text)>0 then
Maisuu(i) = Val(txtKinsyu(i).Text)
Else
Maisuu(i)=0
End If
Next i

lngGoukei = Maisuu(0) * 10000 + Maisuu(1) * 5000 + Maisuu(2) * 1000 _
+ Maisuu(3) * 500 + Maisuu(4) * 100 + Maisuu(5) * 50 _
+ Maisuu(6) * 10 + Maisuu(7) * 5 + Maisuu(8) * 1

lblGoukei.Caption = lngGoukei

この場合 Dim文で変数をLong(16桁数値)に宣言します。
それとテキストボックスが空白かどうかの判断をします。
IF文を追加しました。しかしまだ問題があります。
テキストに数字以外が入力された時はエラーになりそうですが...ここまででテストしてみて下さい。

Dim Maisuu(8) ,IngGoukei as Long

For i = 0 To 8
'テキストボックスが空白でない場合
If Len(txtKinsyu(i).Text)>0 then
Maisuu(i) = Val(txtKinsyu(i).Text)
Else
Maisuu(i)=0
End If
Next i

lngGouk...続きを読む


人気Q&Aランキング