VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 ファイル入出力関係のメニュー
1.テキストファイル読み書き色々
2.CSV ファイルの読み書き色々
3.固定長テキストファイルの読込
4.ランダムファイルの簡単なサンプル
5.FileSystemObject の TextStream オブジェクトを使っての読み書き色々
6.ADOを使ってCSVファイルをMSHFlexGridに表示する
7.テキストファイル同士の結合
8.テキストファイルの最後の数行を取得する
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載のファイル入出力に関するサンプル


2.CSV ファイルの読み書き色々
1.CSV ファイルを変数毎に読み書きする
2.CSV ファイルを行毎に読み書きする
3.
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
なし
その他 :
    :
このページのトップへ移動します。 1.CSV ファイルを変数毎に読み書きする
使用するデータは、下記のようなものをメモ帳で作成しておいて下さい。

527-0000,八日市市 東沖野,VBレスキュー
527-0001,甲賀郡 甲西町,ホーム甲西店
527-0002,近江八幡市 鷹飼町,不動産販売
527-0003,八日市市 本町,××八日市店
527-0004,近江八幡サティ店,カメラの店
527-0005,愛知郡 愛知川町,ハウジング
527-0006,八日市市 五智町,エンジニアリング
527-0007,八日市市 札の辻,ママセンター
527-0008,八日市市 東沖,○●建設(株)
527-0009,近江八幡市 鷹飼町,ドコモショップ


Option Explicit   'SampleNo:062  2002.05.14   @ 2007.01.19

Private strYubin() As String
Private strAddre() As String
Private strNamae() As String
Private lngDatN  As Long
Private intFileNo As Integer

Private Sub Command1_Click()
'CSV形式ファイルを変数毎に読み書きする
  lngDatN = -1
  '使用可能なファイルナンバーを取得
  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

  Dim i As Long
  For i = 0 To UBound(strYubin)
    Debug.Print strYubin(i), strAddre(i), strNamae(i)
  Next i
End Sub

上記出力結果
527-0000 八日市市 東沖野 VBレスキュー
527-0001 甲賀郡 甲西町 ホーム甲西店
527-0002 近江八幡市 鷹飼町 不動産販売
527-0003 八日市市 本町 ××八日市店
527-0004 近江八幡サティ店 カメラの店
527-0005 愛知郡 愛知川町 ハウジング
527-0006 八日市市 五智町 エンジニアリング
527-0007 八日市市 札の辻 ママセンター
527-0008 八日市市 東沖 ○●建設(株)
527-0009 近江八幡市 鷹飼町 ドコモショップ

Private Sub Command2_Click()
'CSV 形式で保存
  Dim lngCount As Long
  intFileNo = FreeFile
  'シーケンシャル書込みモードで sample01.csv をオープン
  Open "sample01.csv" For Output As #intFileNo
  For lngCount = 0 To lngDatN
    Write #intFileNo, strYubin(lngCount), strAddre(lngCount), strNamae(lngCount)
  Next lngCount
  Close #intFileNo
End Sub

上記保存結果
"527-0000","八日市市 東沖野","VBレスキュー"
"527-0001","甲賀郡 甲西町","ホーム甲西店"
"527-0002","近江八幡市 鷹飼町","不動産販売"
"527-0003","八日市市 本町","××八日市店"
"527-0004","近江八幡サティ店","カメラの店"
"527-0005","愛知郡 愛知川町","ハウジング"
"527-0006","八日市市 五智町","エンジニアリング"
"527-0007","八日市市 札の辻","ママセンター"
"527-0008","八日市市 東沖","○●建設(株)"
"527-0009","近江八幡市 鷹飼町","ドコモショップ"

個々のデータを文字列型として扱っているので各データは、"" で括られます。
上記の保存したデータを使って表示しても問題なく読み込み表示できます。

又、Input # ステートメントを使用してファイルから変数へデータを正しく読み込むことができるように、データをファイルに書き込む場合は、Print # ステートメントではなく、必ず Write # ステートメントを使用してください。
Write # ステートメントを使用すると、ファイルにデータを書き込むときに各データ項目の間に正しくカンマ (,) が挿入されます。

このページのトップへ移動します。 2.CSV ファイルを行毎に読み書きする

Private Sub Command1_Click()
  'CSV ファイルを読み込み MSFlexGrid に表示
  Dim intFileNo As Integer  'ファイルNo
  Dim TextLine As String
  Dim CellsData As Variant
  Dim i     As Long
  Text1.Text = ""
  intFileNo = FreeFile
  Open "sample01.csv" For Input As #intFileNo
  Do Until EOF(intFileNo)               'EOF(intFileNo)が True になるまで実行
    Line Input #intFileNo, TextLine         '1行全体を変数に読み込む
    '文字列中の "" も取り除かれるので注意(別途追加設定が必要)
    TextLine = Replace(TextLine, Chr$(34), "")   ' "" を取り除く
    CellsData = Split(TextLine, ",")        'カンマ区切りで列データを分割
    For i = LBound(CellsData) To UBound(CellsData)
      Text1.Text = Text1.Text & CellsData(i) & vbTab
    Next i
    Text1.Text = Text1.Text & vbCrLf
  Loop
  Close #intFileNo
End Sub


通常、Line Input # ステートメントを使用して読み込んだデータは、Print # ステートメントを使用して書き込みます。

又、データや使用目的によっても色々読み書きの方法が異なりますので、下記サンプル等も参考に目的に合わせて作り直して下さい。

MSFlexgridを使ってのCSVファイル読み書き色々
ダブルクォーテーションを含む文字列の読込表示
不特定の列数のCSVファイルの取込
CSV ファイルをシーケンシャル入力モードで開き MSHFlexGrid に表示
MSFlexGrid/MSHFlexGrid の表示データをファイルに保存方法色々

このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
CSV ( Comma Separated Values ) カンマ区切り ファイル  CSV形式ファイルを変数毎に読み書きする




このページのトップへ移動します。