• ベストアンサー

テキストボックの文字を一行ずつ読み込む

こんにちは。 VB6.0にてフォーム上のテキストボックスの文字列を1行ずつ読み込んで処理し、別のテキストボックに書き出したいのですが、1行ずつ読む方法が分かりません。(テキストファイルなら出来るのですが) 何方か方法をご存知ないでしょうか。 宜しくお願いします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.4

ちょっと、致命的なミスをしていましたので訂正します。 Private Sub Command1_Click()   Dim I    As Integer   Dim strText As String   Dim strTexts(1) As String      Me.Text1(1).Text = ""   If Len(Me.Text1(0).Text & "") > 0 Then     strTexts(0) = Me.Text1(0).Text     Do       I = I + 1       strText = CutStr(strTexts(0), vbCrLf, I)       If strText <> "" Then         strTexts(1) = strTexts(1) & strText & vbCrLf       End If     Loop Until strText = ""     Me.Text1(1).Text = Left(strTexts(1), Len(strTexts(1)) - 1)   End If End Sub フォームのテキストボックスからの読み込みと書き込みは最小ステップにするべきでした。

gogojets
質問者

お礼

おお~できました。 迅速な回答を頂いて感謝しています。 また何かありましたら、宜しくお願いいたします。 本当にありがとうございました!!

その他の回答 (4)

回答No.5

こんにちは やりたいことがいまいちわかりませんが、 回答への補足を見ていると text2.text = text1.text わざわざstResultを経由しなくてもよさそうですが。 改行付のテキストを配列に入れるには以下の方法はどうでしょうか? dim hairetu() as String hairetu = split(text1.text, vbNewLine) VB6がないので検証できませんが間違っていたらゴメンナサイ。

noname#140971
noname#140971
回答No.3

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)   Debug.Print KeyCode End Sub は、無関係。

noname#140971
noname#140971
回答No.2

Private Sub Command1_Click()   Dim I    As Integer   Dim strText As String      Me.Text1(1).Text = ""   If Len(Me.Text1(0).Text & "") > 0 Then     Do       I = I + 1       strText = CutStr(Me.Text1(0).Text, vbCrLf, I)       If strText <> "" Then         Me.Text1(1).Text = Me.Text1(1).Text & strText & vbCrLf       End If     Loop Until strText = ""     Me.Text1(1).Text = Left(Me.Text1(1).Text, Len(Me.Text1(1).Text) - 1)   End If End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)   Debug.Print KeyCode End Sub Private Sub Form_Load()   Me.Text1(0).Text = "001" & vbCrLf   Me.Text1(0).Text = Me.Text1(0).Text & "002" & vbCrLf   Me.Text1(0).Text = Me.Text1(0).Text & "003" End Sub このように、CutStr関数などで1行づつ抽出するという方法があります。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function [イミディエイト] ? CutStr("AAAA/BBBB/CCCC", "/", 1) AAAA ? CutStr("AAAA/BBBB/CCCC", "/", 2) BBBB ? CutStr("AAAA/BBBB/CCCC", "/", 3) CCCC 質問の案件では、区切り文字がスラッシュ(/)ではなく cbCrLf ということです。 ? CutStr("AAAA AND BBBB AND CCCC", " AND ", 1) AAAA と、CutStr関数が、区切り文字の長さを問いませんので Chr$(13) & Chr$(10) を指定できます。

  • Qoo1985
  • ベストアンサー率22% (131/570)
回答No.1

テキストボックスの内容をプログラムの中で配列の変数を切って それに入れていって、配列で処理するのはだめなんですか?

gogojets
質問者

補足

返信ありがとうございまうす。 テキストファイルならば、 ------------------------------------------- ' 使用可能なファイル番号を取得する Dim iFileNo As Integer iFileNo = FileSystem.FreeFile() ' ファイルを開く Open "C:\Hoge.txt" For Input As #iFileNo ' 読み込んだ結果をすべて格納するための変数を宣言する Dim stResult As String ' ファイルを 1 行ずつ読み込む Do While (Not FileSystem.EOF(iFileNo)) ' ファイルを 1 行ずつ読み込む Dim stBuffer As String Line Input #iFileNo, stBuffer ' 読み込んだものを追加で格納する stResult = stResult & stBuffer & vbNewLine Loop ' ファイルを閉じる (正しくは オブジェクトの破棄を保証する を参照) Close #iFileNo ' 結果を表示する Call MsgBox(stResult) ---------------------------------------------------------------------- のようにテキストファイルの内容を1行ずつLine inputで読み込んで、1行ごとに「”」で囲むなど出来ますが、テキストボックスだとLine inputで読めないので困っているのです。 宜しくお願いいたします。

関連するQ&A

  • 一行テキストボックスの縦配置

    縦書きの手紙を書いているように、フォームの一行テキストボックスを縦文字(漢字で名前などを)入力できる様にしたいのですが、可能でしょうか。可能な方法があるなら、html以外でも教えて下さい。可能な場合、スクロールテキストボックス(複数行のテキストエリア)も同じに出来ますか。

  • テキストファイルを1行ずつ別のファイルに分割する

    400行ぐらいのテキストファイルを、1行ずつ別のファイルに分割したいと思います。 ファイル名は**001.txtのように、(**は任意の文字列、数字は連番)なってくれれば嬉しいです。 どなたかこのような処理のできる簡単な方法をご存じないでしょうか? よろしくお願いします。

  • テキストファイル 文字列置き換え

    複数のテキストファイルを一括で別の連番のついた文字列に 置きかえることのできるソフトを探しています。 以下の3つの条件を満たすソフトはありますでしょうか? ・複数のテキストファイルを一括で置き換え可能 ・「何行目の文字列を置き換える」という指定が可能 ・置き換えた文字列に連番をつけることが可能 ご存知でしたら、ご教示ください。 よろしくお願いします

  • テキストボックスでのカーソルについて

    VB6で作ったフォームでテキストボックスにフォーカスが移ったときに既に入っている文字列の先頭にカーソルがいるのですが、これを文字列をすべて選択した様に(反転表示)にならないか、または文字列の最後尾にカーソルを置けないか、悩んでいます。よろしくお願いいたします。

  • テキストファイル(またはCSV)への書き出しについて

    Accessのフォームに作成したテキストボックスの内容を テキストファイル等にてエクスポートする事は可能でしょうか? ヘルプ等を見たのですが、テーブルやクエリの内容を 書き出せることはわかったのですが、 単一のテキストボックスのみの内容を書き出す方法が わからなかったので質問させて頂きました。 テキストボックスに文字列を入力後 ボタンを押す事で、テキストファイルにボックス内の 文字列を書き出し、のような感じです。

  • コンボボックの連携について

    コンボボックの連携について Access2003を使用しているAccess初心者です。 フォーム1にコンボボックがあり、顧客テーブルのにリンクされています。 コンボには表示順に オートID 顧客No 顧客名です。 コンボボックを選択すると2番目の顧客名が表示するようになっています。 OKボタンで顧客登録画面を開いているのですが、この時、顧客登録画面の顧客No.もコンボボックスに しているのですが、フォーム1で選択したコンボボックスの値が顧客登録画面のコンボボックに反映しま せん。 どのように記述したら、顧客番号が反映するのでしょうか。 コンボボックスから別のフォームのコンボボックスには値は反映しないもなのでしょうか?

  • 文字をテキストボックスの中央に

    テキストボックスの中央に文字を表示する方法ってありますか? センタリングとはちょっと違います。 縦書きのテキストボックスに1行入っているのですが、どうも左右の余白が等しくないのです。 テキストボックスの大きさは、変えたくないので「文字列にあわせて描画オブジェクトの大きさを調整する」のチェックははずしています。 word2003 winXP 利用

  • テキストボックスへの文字の表示について(文字は可変である)

    リストボックスと関連付けさせて、テキストボックスに文字を表示させたいです。 表示のさせ方としては、例えば、リストボックスに5つ(5行)の文字列があります。 実現させたい事は、常にそのページが開いた時はリストボックスの1行目をテキストボックスに表示させたいです。簡単な具体例をあげると、 リストボックスに 1行目に「あ」、 2行目に「い」、 3行目に「う」、 4行目に「え」、 5行目に「お」 とあれば、 テキストボックスに、「あ」と表示。 2行目を選択したら「い」と表示。など・・・。 しかし、リストボックスの文字列の順番は場合により並びが同じではないので、スクリプト言語(VBScript?)を用いないといけないとは思いますが・・・ この例をいうと、ページが開いた時、 1行目に「お」、 2行目に「え」、 3行目に「う」、 4行目に「い」、 5行目に「あ」 とあれば、 テキストボックスに、「お」と表示してほしい。 この説明でご理解いただければ幸いです。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • VBでテキストボックス内の文字列を並べ替え

    VB2008を使用しています。 あるテキストファイルに AAA BBB CCC DDD EEE FFF ........ ZZZZ の様にデータが入っています。 それとは別にフォーム上のテキストボックス(正確にはリッチテキスト)に テキストファイルの中のいづれかがランダムで出力されます。 たとえば、 ZZZ BBB この場合に、テキストボックスの並び順をテキストファイルの並び順に合わせたいのですが (この場合) BBB ZZZ 何かいい方法があればご教示下さい。 サンプルを書いていただけると幸いです。

  • エクセルのテキストボックス内は検索できないのでしょうか?

    エクセルの表から任意の文字列をカウントしたいのですが、一部セルでなくテキストボックスにて表が作成されている部分があります。 このテキストボックス内の文字列を検索する方法はあるのでしょうか? 客先指定のフォームのため作り直すことができないのですが、何かよい方法をご存知でしたらぜひご教示ください。