テキストファイル読み書き色々 |
1.テキストファイルを丸ごと読み書きする (062) 2.テキストファイル(CSV形式)を変数毎に読み書きする Excelで次のようなファイルを作成し、TXT形式(タブ区切り)(sample.txt) CSV(カンマ区切り)(sample.CSV)で保管して下さい |
|
1.テキストファイルを丸ごと読み書きする 宣言セクションに記入 Option Explicit 'SampleNo=062 WindowsXP VB6.0(SP5) 2002.05.14 Dim strYubin() As String Dim strAddre() As String Dim strNamae() As String Dim lngDatN As Long Dim intFileNo As Integer Private Sub Command1_Click() 'テキストファイルの内容を1行毎に読み込む '別途下記プロパティを設定して下さい 'Text1.Text = "" 'Text1.MultiLine = True 'Text1.ScrollBars = vbBoth Dim strTextLine As String Dim strTxtDat As String '使用可能なファイル番号を取得 intFileNo = FreeFile 'テキストファイルをオープン Open "sample.txt" For Input As #intFileNo ' ファイルの終端までループを繰り返します。 Do While Not EOF(intFileNo) '1 行づつ変数に読み込みます。 Line Input #intFileNo, strTextLine ' テキストボックスに表示します。 strTxtDat = strTxtDat & strTextLine & vbCrLf Loop '一旦変数にすべて読み込みその後テキストボックスに '表示した方が高速に処理できる Text1.Text = strTxtDat 'ファイルを閉じる Close #intFileNo End Sub 表示結果 Private Sub Command2_Click()
'テキストボックスの内容を丸ごと保存 intFileNo = FreeFile Open "sample_01.txt" For Output As #intFileNo 'テキストボックスの内容をそのまま保存 Print #intFileNo, Text1.Text Close #intFileNo End Sub 保存結果 |
|
2.テキストファイル(CSV形式)を変数毎に読み書きする Private Sub Command3_Click() 'CSV形式ファイルを変数毎に読み書きする lngDatN = 0 '使用可能なファイルナンバーを取得 intFileNo = FreeFile 'シーケンシャル入力モードで sample.csv をオープン Open "sample.csv" For Input As #intFileNo 'EOF(intFileNo)が True になるまで実行 Do Until EOF(intFileNo) lngDatN = lngDatN + 1 '件数をカウント '変数を1個づつ追加宣言 ReDim Preserve strYubin(lngDatN) As String ReDim Preserve strAddre(lngDatN) As String ReDim Preserve strNamae(lngDatN) As String 'データを各変数に読込 Input #intFileNo, strYubin(lngDatN), strAddre(lngDatN), _ strNamae(lngDatN) Loop 'ファイルを閉じる Close #intFileNo '4番目のデータを表示 Text2.Text = 4 Text3.Text = strYubin(4) Text4.Text = strAddre(4) Text5.Text = strNamae(4) End Sub 表示結果 Private Sub Command4_Click() 'CSV 形式で保存 Dim lngCount As Long intFileNo = FreeFile 'シーケンシャル書込みモードで sample.csv をオープン Open "sample_01.csv" For Output As #intFileNo For lngCount = 1 To lngDatN Write #intFileNo, strYubin(lngCount), _ strAddre(lngCount), strNamae(lngCount) Next lngCount Close #intFileNo End Sub 保存結果 Excelでそのまま読み込めます レコードの表示切替 Private Sub Text2_KeyPress(KeyAscii As Integer) '配列の内容をテキストボックスに表示 Dim Rcno As Long If KeyAscii = vbKeyReturn Then KeyAscii = 0 If Len(Text2.Text) > 0 Then Rcno = CLng(Text2.Text) Text3.Text = strYubin(Rcno) Text4.Text = strAddre(Rcno) Text5.Text = strNamae(Rcno) End If End If End Sub データを変更した場合書換 Private Sub Command5_Click() '変更したデータを配列に読み込み Dim Rcno As Long If Len(Text2.Text) > 0 Then Rcno = CLng(Text2.Text) strYubin(Rcno) = Text3.Text strAddre(Rcno) = Text4.Text strNamae(Rcno) = Text5.Text End If End Sub 全 体 図 |
|
読込んだデータをテキストボックスやリストボックスに表示する場合ここのStrCut()関数等を使ってText1.Text = Text1.Text & StrCut(strYubin(lngCount), 14)
& StrCut(strAddre(lngCount), 44) & StrCut(strNamae(lngCount), 32)
& vbCrLf のようにして表示されると表示幅が揃い、きれいに表示できます。書込んだCSVファイルは関連付起動で簡単にエクセルで表示できます。 Shell ("start.exe " & App.Path & "\sample.csv") |
2002/05/14