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

この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と関連する良く見られている質問

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)

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リッチテキストボックスとテキストボックスの違い

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

Aベストアンサー

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

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

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テキストボックスに記述した数値を加算させたい

コントロール配列にしたテキストボックスに数値を入力し、その数値に金種(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ランキング

おすすめ情報