投稿日 | : 2004/05/05(Wed) 20:05 |
投稿者 | : nobu |
Eメール | : |
URL | : |
タイトル | : Re: MSFlexGirdの保存について |
提示コードに近い形で書くと以下の様では如何ですか?
表示用のファイルを"C:\Seiseki.csv"としてあり
中身は下記です。
氏名,国語,算数,理科,社会
A君,85,89,54,65
B君,98,95,85,70
Cさん,45,35,55,75
Dさん,65,75,75,55
E君,30,20,15,10
保存後のファイルは "C:\Seiseki_2.csv" としてあります。
なお name はVBでの予約語ですので使用不可と思います。
Option Explicit
Dim lngCountI As Long 'ループのカウンタ
Dim FileNo As Integer
Dim name_ As String '名前
Dim kokugo As Single '国語の点数
Dim sansuu As Single '算数の点数
Dim rika As Single '理科の点数
Dim syakai As Single
Dim kokugo_ As String '科目名
Dim sansuu_ As String
Dim rika_ As String
Dim syakai_ As String
Dim i As Integer '行
Private Sub Form_Load()
'表示する為にファイルを読み込み、表示する
FileNo = FreeFile
i = 0
Open "C:\Seiseki.csv" For Input As #FileNo
With MSFlexGrid1
'見出しは文字型変数なので別扱い
Input #FileNo, name_
Input #FileNo, kokugo_
Input #FileNo, sansuu_
Input #FileNo, rika_
Input #FileNo, syakai_
.Row = i
.Col = 0: .Text = name_
.Col = 1: .Text = kokugo_
.Col = 2: .Text = sansuu_
.Col = 3: .Text = rika_
.Col = 4: .Text = syakai_
'ここからはデータ部
'kokugo 等は数値としての扱いなので
'見出し部とは別扱いとしてある
Do
Input #FileNo, name_
Input #FileNo, kokugo
Input #FileNo, sansuu
Input #FileNo, rika
Input #FileNo, syakai
i = i + 1
.Row = i
.Col = 0: .Text = name_
.Col = 1: .Text = kokugo
.Col = 2: .Text = sansuu
.Col = 3: .Text = rika
.Col = 4: .Text = syakai
Loop Until EOF(FileNo)
Close #FileNo
End With
End Sub
Private Sub Command3_Click()
With MSFlexGrid1
FileNo = FreeFile
Open "C:\Seiseki_2.csv" For Output As #FileNo
'見出しは文字型変数なので別扱い
.Row = 0
.Col = 0
name_ = .Text
.Col = 1
kokugo_ = .Text
.Col = 2
sansuu_ = .Text
.Col = 3
rika_ = .Text
.Col = 4
syakai_ = .Text
'見出し部を保存
Write #FileNo, name_, kokugo_, sansuu_, rika_, syakai_
'ここからはデータ部
'kokugo 等は数値としての扱いなので
'見出し部とは別扱いとしてある
For lngCountI = 1 To .Rows - 1
.Row = lngCountI
.Col = 0
name_ = .Text
.Col = 1
kokugo = .Text
.Col = 2
sansuu = .Text
.Col = 3
rika = .Text
.Col = 4
syakai = .Text
'データ部を1行毎に保存
Write #FileNo, name_, kokugo, sansuu, rika, syakai
Next lngCountI
Close #FileNo
End With
End Sub
---------------
Private Sub Command3_Click() の中で
With MSFlexGrid1
.Row = 0
.Col = 0
.Text = name_
.Col = 1
.Text = kokugo_
などとなっていますが、ここは何をする積もりですか?
.Text = name_ では name_ を表示しようと言う
意図かも知れませんが name_ にはまだ文字列がセットされていませんよ、
コードを順を追って何をしているのか、どう言う結果になるのかを
考えてください。
下記に先日書いた「フローチャート」に付いての記事があります。
これは自分の目的とする処理を実行する為の手順書です。
ある処理をする為には手順が必要です。
計算等をして答えを求めるには公式や手順が必要です。
アルゴリズムと言う語句に付いても調べて下さい。
闇雲にコードを書いても求める結果は出て来ません。
VBのコードの書き方だけが分かっていてもダメです。
手順に従った適切なコーディングが必要になります。
http://www005.upp.so-net.ne.jp/h-masuda/ProText/Flow/index.html
各項目毎に変数名を変えないで読み込み、表示、保存する
方法もありますが基本的には変わらないので
まずは1方法を確実に理解してください。