テキストファイルを読込,表示,保存する |
テキストファイルを読込・表示する (024) | |
コンマ区切りのテキストファイル(Seiseki.csv)をシーケンシャルファイルとして読込MSFlexGridのセルに表示します。 (Seiseki.csv)はエクセルでCSV形式で保存したものです。 Excel等で下記のように作成し、CSV形式で保存して下さい。 ファイルの保存場所はそれぞれの環境に合せて変更して下さい。 その1で作成したコードに下記の部分を追加して下さい。 メニューを作成し Private Sub mnuFileOpen_Click() 'メニューの読込表示 Call sFileOpen End Sub Private Sub sFileOpen() 'データ読込表示処理 Dim Sno As Integer '出席番号 Dim name As String '名前 Dim kokugo As Single '国語の点数 Dim suugaku As Single '数学の点数 Dim eigo As Single '英語の点数 Dim goukei As Single '合計点 Dim heikin As Single '平均点 Dim DatN As Integer 'データのカウント Dim intFileNo As Integer 'ファイルNo DatN = 0 With MSFlexGrid1 .Visible = False '一旦非表示に(読込が早くなる) intFileNo = FreeFile 'シーケンシャル入力モードでSeiseki.txtをオープン 'ファイルのPATHは別途設定して下さい。 Open "Seiseki.csv" For Input As #intFileNo Do Until EOF(intFileNo) 'EOF(intFileNo)が True になるまで実行 Input #intFileNo, Sno, name, kokugo, suugaku, eigo, goukei, heikin '読込んだデータをセルに代入 .Rows = DatN + 2 .Row = DatN + 1 .RowHeight(.Row) = 350 .Col = 0 .Text = Format$(DatN + 1, "##0") .Col = 1 .Text = Format$(Sno, "####0") .Col = 2 .Text = name .Col = 3 .Text = Format$(kokugo, "####0") .Col = 4 .Text = Format$(suugaku, "####0") .Col = 5 .Text = Format$(eigo, "####0") .Col = 6 .Text = Format$(goukei, "####0") .Col = 7 .Text = Format$(heikin, "###0.0") DatN = DatN + 1 Loop Close #intFileNo 'カレントセルをホームポジションに .Row = 1 .Col = 1 .TopRow = 1 .Visible = True '再表示 .SetFocus End With End Sub 以上で「Seiseki.csv」ファイルを読込セルに表示できるはずです。 |
|
テキストファイルを保存する。 (024) 現在表示されているデータをファイルに保存するように設定する。 保存するには、ファイルをシーケンシャル出力モードでオープンし、Write#ステートメントで書き込みます。 ファイルをoutputモードで開いた場合は、ファイルの先頭からデータが保存されAppendモードで開いた場合は、ファイルの最後に追加されます。 |
|
メニューを作成し
Private Sub mnuFileSave_Click() '上書保存のメニュー Call sFileSave End Sub Private Sub sFileSave() 'データの上書保存処理 Dim lngCountI As Long 'ループのカウンター Dim Sno As Integer '出席番号 Dim name As String '名前 Dim kokugo As Single '国語の点数 Dim suugaku As Single '数学の点数 Dim eigo As Single '英語の点数 Dim goukei As Single '合計点 Dim heikin As Single '平均点 Dim intFileNo As Integer 'ファイルNo intFileNo = FreeFile Open "Seiseki.csv" For Output As #intFileNo With MSFlexGrid1 .Visible = False '一旦非表示に(読込が早くなる) '現在の状態を配列に再読込 For lngCountI = 1 To .Rows - 1 .Row = lngCountI .Col = 1 Sno = .Text .Col = 2 name = .Text .Col = 3 kokugo = .Text .Col = 4 suugaku = .Text .Col = 5 eigo = .Text .Col = 6 goukei = .Text .Col = 7 heikin = .Text Write #intFileNo, Sno, name, kokugo, suugaku, eigo, goukei, heikin Next lngCountI Close #intFileNo 'カレントセルを反転表示に戻す .Visible = True .Row = 1 'ホームポジションに移動 .Col = 1 .TopRow = 1 .SetFocus End With End Sub |
2002/04/27