[リストへもどる]
一括表示

投稿時間:2003/07/06(Sun) 23:09
投稿者名:tea
Eメール:
URL :
タイトル:
MSFlexGridについての質問です。
フォームに配列にしたMSFlexGrid1(0)と(1)を貼り付けてあるんですが、
これらを1つのcsvファイルに収めることは可能でしょうか?
こちらのサンプルを参考にしてみたんですがうまくいかずに困っています。
教えてください。

投稿時間:2003/07/07(Mon) 07:26
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: MSFlexGridについての質問です。
> フォームに配列にしたMSFlexGrid1(0)と(1)を貼り付けてあるんですが、
> これらを1つのcsvファイルに収めることは可能でしょうか?
> こちらのサンプルを参考にしてみたんですがうまくいかずに困っています。

片方だけ MSFlexGrid1(0) の中身をCSVには出力出来るのですよね? (A)
片方だけ MSFlexGrid1(1) の中身をCSVには出力出来るのですよね? (B)

これが出来なければ始まりませんが。
いきなり一つのcsvに出来ないならまずは各々を別々に出力する。
やり方は幾つかありますが、例えば

1.MSFlexGrid1(0) からAを作成
2.MSFlexGrid1(1) からBを作成
3.AからCを書き出し。
  ここでCをファイル・クローズさせない。 
4.BにCを書き出し。
  3.でCをファイル・クローズさせてないので
  CにBが追加で出力される。
....でA+B ==> C になります。

個々の処理は基本的なファイル処理ですので
コードを書くまでも無いでしょう。
要は手順の(アルゴリズムと言いますね)考え方です。

....それとも質問の意味が違うのかな?

投稿時間:2003/07/07(Mon) 16:23
投稿者名:tea
Eメール:
URL :
タイトル:
Re^2: MSFlexGridについての質問です。
> ....それとも質問の意味が違うのかな?

いいえ、その通りです。
NOBUさん、ありがとうございます。
以下のようにコードを記述してみたんですが、ファイルに名前を付
けて保存してみると「ファイル名が不正です。」とエラーが出て、
その時フォームのMSFlexGrid2(0)と(1)のうち2(0)が消えている状態
です。
どこがおかしいのか教えてください。
よろしくお願いします。

Private Sub sFileSave_Name()

'データの名前を付けて保存処理'
Dim lngCountl As Long   'ループのカウンタ'

Dim name As String   '名前'
Dim Shot As String    'シュート回数'
Dim ThreePShot As String  '3ポイントシュート成功回数'
Dim TwoPShot As String   '2ポイントシュート成功回数'
Dim FreeThrow As String   'フリースロー成功回数'
Dim Soutokuten As String   '総得点'
Dim Rebound As String   'リバウンド獲得回数'
Dim Assist As String   'アシスト成功回数'
Dim Steel As String   'スティール成功回数'
Dim BlockShot As String   'ブロックショット成功回数'
Dim Foul As String   'ファウル回数'

'ファイルナンバーの変数を宣言します。'
Dim intFileNoA As Integer   'ファイルナンバーA'
Dim intFileNoB As Integer   'ファイルナンバーB'
Dim int


FileNoC As Integer   'ファイルナンバーC'

    'キャンセルボタンが押されたらエラーとして通知する'
    CommonDialog1.CancelError = True
    
    'エラーの場合の飛び先指定'
    On Error GoTo exit_error
    
    'ダイアログボックスの形を決める'
    CommonDialog1.Filter = "シート (*.csv)|*.csv"
    CommonDialog1.Flags = cdlOFNExplorer Or cdlOFNLongNames Or _
        cdlOFNNoChangeDir Or cdlOFNOverwritePrompt
        
    '「名前を付けて保存」ダイアログボックスを表示'
    CommonDialog1.ShowSave
    
    'ファイル名をグローバル変数にセット'
    file_name = CommonDialog1.FileName
    
    '拡張子部分を取り外す'
    If Right(file_name, 4) = ".csv" Then
    
        file_name = Left(file_name, Len(file_name) - 4)
        
    End If
    
    '拡張子*.csvを付ける'
    file_name = file_name & ".csv"
    
    intFileNoA = FreeFile
    Open file_name For Output As #intFileNoA
          
    With MSFlexGrid2(0)
        '一旦非表示にする'
        .Visible = False
        '現在の状態を再読み込み'
        For lngCountl = 1 To .Rows - 1
            .Row = lngCountl
            .Col = 1
            name = .Text
            .Col = 2
            Shot = .Text
            .Col = 3
            ThreePShot = .Text
            .Col = 4
            TwoPShot = .Text
            .Col = 5
            FreeThrow = .Text
            .Col = 6
            Soutokuten = .Text
            .Col = 7
            Rebound = .Text
            .Col = 8
            Assist = .Text
            .Col = 9
            Steel = .Text
            .Col = 10
            BlockShot = .Text
            .Col = 11
            Foul = .Text
            
            Write #intFileNoC, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                        Soutokuten, Rebound, Assist, Steel, Foul
        
        Next lngCountl
        
        'カレントセルを反転表示に戻す'
        .Visible = True
        .Row = 1
        .Col = 1
        .TopRow = 1
        .SetFocus
    
    intFileNoB = FreeFile
    Open file_name For Output As #intFileNoB
    
    End With
    
    With MSFlexGrid2(1)
        '一旦非表示にする'
        .Visible = False
        '現在の状態を再読み込み'
        For lngCountl = 1 To .Rows - 1
            .Row = lngCountl
            .Col = 1
            name = .Text
            .Col = 2
            Shot = .Text
            .Col = 3
            ThreePShot = .Text
            .Col = 4
            TwoPShot = .Text
            .Col = 5
            FreeThrow = .Text
            .Col = 6
            Soutokuten = .Text
            .Col = 7
            Rebound = .Text
            .Col = 8
            Assist = .Text
            .Col = 9
            Steel = .Text
            .Col = 10
            BlockShot = .Text
            .Col = 11
            Foul = .Text
            
            Write #intFileNoC, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                        Soutokuten, Rebound, Assist, Steel, Foul
        
        Next lngCountl
        Close #intFileNoC
        'カレントセルを反転表示に戻す'
        .Visible = True
        .Row = 1
        .Col = 1
        .TopRow = 1
        .SetFocus
        
    End With


'ラベル:終了処理'
exit_syori:

    'フォームに名前を付ける'
    frmGameStats.Caption = file_name
    
    Exit Sub
    
'エラー処理'
exit_error:

    'メッセージボックスを表示'
    MsgBox Err.Description
    
    Resume exit_syori
    
End Sub

投稿時間:2003/07/07(Mon) 16:43
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^3: MSFlexGridについての質問です。
> 以下のようにコードを記述してみたんですが、ファイルに名前を付
> けて保存してみると「ファイル名が不正です。」とエラーが出て、

エラーがはっきりしているのですから該当個所を
デバッグモードで表示させて見ても分かると思いますよ。
拡張子がcsvなら.csvを外して、再度付加するのですか?
csv以外ならどうなります。
abc.txt  ==> abc.txt.csv になってしまいませんか?
これならエラーで当たり前ですが?

(別の事をやっている最中なのでコードを動かして見てはいませんが)

投稿時間:2003/07/07(Mon) 17:26
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: MSFlexGridについての質問です。
> こちらのサンプルを参考にしてみたんですがうまくいかずに困っています。

参考にして頂いたならうまくいくはずですが!


列数が同じCSVふぁいるなら単純に下記のようにしてもOKです。(これも記載してます)
    'AファイルとBファイルを1つに結合してCファイルを作成
    AFilePath = App.Path & "\AFile.CSV" & " + "
    BFilePath = App.Path & "\BFile.CSV" & " "   '半角スペースを付加
    CFilePath = App.Path & "\CFile.CSV"
    Call Shell(Environ("ComSpec") & " /c copy " & AFilePath & BFilePath & CFilePath, vbHide)

投稿時間:2003/07/07(Mon) 18:41
投稿者名:tea
Eメール:
URL :
タイトル:
Re^2: MSFlexGridについての質問です。
> 参考にして頂いたならうまくいくはずですが!

花ちゃんさん、ご指導ありがとうございます。
また、こちらの知識不足なのにそちらのサンプルでうまく行か
ないと書いてしまって申し訳ありません。
以下のコードに書き換えてみましたが、今度は保存が出来たん
ですが、再度開いてみると「ファイルは既に開かれています。」
というエラーが出てMSFlexGrid2(0)の一部は表示されています
が、MSFlexGrid2(1)は保存されていないので表示されない状態
です。
長々とコードを書いてしまって申し訳ないんですが、
どうか教えてください。

Private Sub sFileSave_Name()

'データの名前を付けて保存処理'
Dim lngCountl As Long   'ループのカウンタ'

Dim name As String   '名前'
Dim Shot As String    'シュート回数'
Dim ThreePShot As String  '3ポイントシュート成功回数'
Dim TwoPShot As String   '2ポイントシュート成功回数'
Dim FreeThrow As String   'フリースロー成功回数'
Dim Soutokuten As String   '総得点'
Dim Rebound As String   'リバウンド獲得回数'
Dim Assist As String   'アシスト成功回数'
Dim Steel As String   'スティール成功回数'
Dim BlockShot As String   'ブロックショット成功回数'
Dim Foul As String   'ファウル回数'
'ファイルナンバー変数を宣言します。'
Dim intFileNoA As Integer   'ファイルナンバーA'
Dim intFileNoB As Integer   'ファイルナンバーB'
Dim intFileNoC As Integer   'ファイルナンバーC'
Dim AFilePath As Integer
Dim BFilePath As Integer
Dim CFilePath As Integer

    'キャンセルボタンが押されたらエラーとして通知する'
    CommonDialog1.CancelError = True
    
    'エラーの場合の飛び先指定'
    On Error GoTo exit_error
    
    'ダイアログボックスの形を決める'
    CommonDialog1.Filter = "シート (*.csv)|*.csv"
    CommonDialog1.Flags = cdlOFNExplorer Or cdlOFNLongNames Or _
        cdlOFNNoChangeDir Or cdlOFNOverwritePrompt
        
    '「名前を付けて保存」ダイアログボックスを表示'
    CommonDialog1.ShowSave
    
    'ファイル名をグローバル変数にセット'
    file_name = CommonDialog1.FileName
    
    intFileNoA = FreeFile
    Open file_name For Output As #intFileNoA
    
    With MSFlexGrid2(0)
        '一旦非表示にする'
        .Visible = False
        '現在の状態を再読み込み'
        For lngCountl = 1 To .Rows - 1
            .Row = lngCountl
            .Col = 1
            name = .Text
            .Col = 2
            Shot = .Text
            .Col = 3
            ThreePShot = .Text
            .Col = 4
            TwoPShot = .Text
            .Col = 5
            FreeThrow = .Text
            .Col = 6
            Soutokuten = .Text
            .Col = 7
            Rebound = .Text
            .Col = 8
            Assist = .Text
            .Col = 9
            Steel = .Text
            .Col = 10
            BlockShot = .Text
            .Col = 11
            Foul = .Text
            
            Write #intFileNoA, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                        Soutokuten, Rebound, Assist, Steel, Foul
        
        Next lngCountl
        
        'カレントセルを反転表示に戻す'
        .Visible = True
        .Row = 1
        .Col = 1
        .TopRow = 1
        .SetFocus
        
    End With
    
    intFileNoB = FreeFile
    Open file_name For Output As #intFileNoB
    
    With MSFlexGrid2(1)
        '一旦非表示にする'
        .Visible = False
        '現在の状態を再読み込み'
        For lngCountl = 1 To .Rows - 1
            .Row = lngCountl
            .Col = 1
            name = .Text
            .Col = 2
            Shot = .Text
            .Col = 3
            ThreePShot = .Text
            .Col = 4
            TwoPShot = .Text
            .Col = 5
            FreeThrow = .Text
            .Col = 6
            Soutokuten = .Text
            .Col = 7
            Rebound = .Text
            .Col = 8
            Assist = .Text
            .Col = 9
            Steel = .Text
            .Col = 10
            BlockShot = .Text
            .Col = 11
            Foul = .Text
            
            Write #intFileNoB, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                        Soutokuten, Rebound, Assist, Steel, Foul
        
        Next lngCountl
        
        AFilePath = App.Path & "\AFile.CSV" & " + "
        BFilePath = App.Path & "\BFile.CSV" & " "   '半角スペースを付加
        CFilePath = App.Path & "\CFile.CSV"
        Shell "command.com /c copy " & AFilePath & BFilePath & CFilePath, 0
        
        'カレントセルを反転表示に戻す'
        .Visible = True
        .Row = 1
        .Col = 1
        .TopRow = 1
        .SetFocus
        
    End With

'ラベル:終了処理'
exit_syori:

    'フォームに名前を付ける'
    frmGameStats.Caption = file_name
    
    Exit Sub
    
'エラー処理'
exit_error:

    'メッセージボックスを表示'
    MsgBox Err.Description
    
    Resume exit_syori
    
End Sub

投稿時間:2003/07/07(Mon) 18:56
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^3: MSFlexGridについての質問です。
> ですが、再度開いてみると「ファイルは既に開かれています。」
> というエラーが出てMSFlexGrid2(0)の一部は表示されています

ファイルの操作をもっと確実にマスターしましょう!
ファイルはOpenしたら必ずCloseしなければなりません。
下記のようにClose前にOpenすればエラーになるでしょう。

>     Open file_name For Output As #intFileNoA

<--- この間にCloseが無い。

>     Open file_name For Output As #intFileNoB

<--- この後にもCloseが無い。

投稿時間:2003/07/07(Mon) 19:32
投稿者名:tea
Eメール:
URL :
タイトル:
Re^4: MSFlexGridについての質問です。
> ファイルの操作をもっと確実にマスターしましょう!

NOBUさん、ありがとうございます。
また、知識不足で申し訳ありません。
ご指摘されたことを先程のコードに記述したんですが、
保存後に今度は「型が一致しません。」とエラーが出
てしましました。
保存した.csvファイルを開いてみるとMSFlexGrid2(0)
と(1)のうちの1つだけが保存された状態です。
申し訳ありませんがご指導願います。

投稿時間:2003/07/07(Mon) 20:20
投稿者名:通りすがり
Eメール:
URL :
タイトル:
Re^3: MSFlexGridについての質問です。
> > 参考にして頂いたならうまくいくはずですが!
>
> 花ちゃんさん、ご指導ありがとうございます。
> また、こちらの知識不足なのにそちらのサンプルでうまく行か
> ないと書いてしまって申し訳ありません。
> 以下のコードに書き換えてみましたが、今度は保存が出来たん
> ですが、再度開いてみると「ファイルは既に開かれています。」
> というエラーが出てMSFlexGrid2(0)の一部は表示されています
> が、MSFlexGrid2(1)は保存されていないので表示されない状態
> です。
> 長々とコードを書いてしまって申し訳ないんですが、
> どうか教えてください。
>
> Private Sub sFileSave_Name()
>
> 'データの名前を付けて保存処理'
> Dim lngCountl As Long   'ループのカウンタ'
>
> Dim name As String   '名前'
> Dim Shot As String    'シュート回数'
> Dim ThreePShot As String  '3ポイントシュート成功回数'
> Dim TwoPShot As String   '2ポイントシュート成功回数'
> Dim FreeThrow As String   'フリースロー成功回数'
> Dim Soutokuten As String   '総得点'
> Dim Rebound As String   'リバウンド獲得回数'
> Dim Assist As String   'アシスト成功回数'
> Dim Steel As String   'スティール成功回数'
> Dim BlockShot As String   'ブロックショット成功回数'
> Dim Foul As String   'ファウル回数'
> 'ファイルナンバー変数を宣言します。'
> Dim intFileNoA As Integer   'ファイルナンバーA'
> Dim intFileNoB As Integer   'ファイルナンバーB'
> Dim intFileNoC As Integer   'ファイルナンバーC'
> Dim AFilePath As Integer
> Dim BFilePath As Integer
> Dim CFilePath As Integer
>
>     'キャンセルボタンが押されたらエラーとして通知する'
>     CommonDialog1.CancelError = True
>    
>     'エラーの場合の飛び先指定'
>     On Error GoTo exit_error
>    
>     'ダイアログボックスの形を決める'
>     CommonDialog1.Filter = "シート (*.csv)|*.csv"
>     CommonDialog1.Flags = cdlOFNExplorer Or cdlOFNLongNames Or _
>         cdlOFNNoChangeDir Or cdlOFNOverwritePrompt
>        
>     '「名前を付けて保存」ダイアログボックスを表示'
>     CommonDialog1.ShowSave
>    
>     'ファイル名をグローバル変数にセット'
>     file_name = CommonDialog1.FileName
>    
>     intFileNoA = FreeFile
>     Open file_name For Output As #intFileNoA
>    
>     With MSFlexGrid2(0)
>         '一旦非表示にする'
>         .Visible = False
>         '現在の状態を再読み込み'
>         For lngCountl = 1 To .Rows - 1
>             .Row = lngCountl
>             .Col = 1
>             name = .Text
>             .Col = 2
>             Shot = .Text
>             .Col = 3
>             ThreePShot = .Text
>             .Col = 4
>             TwoPShot = .Text
>             .Col = 5
>             FreeThrow = .Text
>             .Col = 6
>             Soutokuten = .Text
>             .Col = 7
>             Rebound = .Text
>             .Col = 8
>             Assist = .Text
>             .Col = 9
>             Steel = .Text
>             .Col = 10
>             BlockShot = .Text
>             .Col = 11
>             Foul = .Text
>            
>             Write #intFileNoA, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
>                         Soutokuten, Rebound, Assist, Steel, Foul
>        
>         Next lngCountl
>        
>         'カレントセルを反転表示に戻す'
>         .Visible = True
>         .Row = 1
>         .Col = 1
>         .TopRow = 1
>         .SetFocus
>        
>     End With
>    
>     intFileNoB = FreeFile
   ^^^^^^^^^^^^^^^^^^^^^^不要では?

>     Open file_name For Output As #intFileNoB
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^不要では?
もしくは、クローズ後追加モードでオープン

>    
>     With MSFlexGrid2(1)
>         '一旦非表示にする'
>         .Visible = False
>         '現在の状態を再読み込み'
>         For lngCountl = 1 To .Rows - 1
>             .Row = lngCountl
>             .Col = 1
>             name = .Text
>             .Col = 2
>             Shot = .Text
>             .Col = 3
>             ThreePShot = .Text
>             .Col = 4
>             TwoPShot = .Text
>             .Col = 5
>             FreeThrow = .Text
>             .Col = 6
>             Soutokuten = .Text
>             .Col = 7
>             Rebound = .Text
>             .Col = 8
>             Assist = .Text
>             .Col = 9
>             Steel = .Text
>             .Col = 10
>             BlockShot = .Text
>             .Col = 11
>             Foul = .Text
>            
>             Write #intFileNoB, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                    ^^^^^^^^^^^
                    #intFileNoA では?

>                         Soutokuten, Rebound, Assist, Steel, Foul
>        
>         Next lngCountl
>        

================================================================================
ここから

>         AFilePath = App.Path & "\AFile.CSV" & " + "
>         BFilePath = App.Path & "\BFile.CSV" & " "   '半角スペースを付加
>         CFilePath = App.Path & "\CFile.CSV"
>         Shell "command.com /c copy " & AFilePath & BFilePath & CFilePath, 0
>        
ここまでは、別物です
=================================================================================
>         'カレントセルを反転表示に戻す'
>         .Visible = True
>         .Row = 1
>         .Col = 1
>         .TopRow = 1
>         .SetFocus
>        
>     End With
>

開いたファイルはクローズしましょう

      Close #intFileNoA


> 'ラベル:終了処理'
> exit_syori:
>
>     'フォームに名前を付ける'
>     frmGameStats.Caption = file_name
>    
>     Exit Sub
>    
> 'エラー処理'
> exit_error:
>
>     'メッセージボックスを表示'
>     MsgBox Err.Description
>    
>     Resume exit_syori
>    
> End Sub

これでどうでしょう?

投稿時間:2003/07/07(Mon) 21:41
投稿者名:tea
Eメール:
URL :
タイトル:
Re^4: MSFlexGridについての質問です。
以下のようにコードを書き直して見ました。
結果は保存時にエラーは出なくなりましたが、
.csvファイルを再度開くとMSFlexGrid2(0)の内容は失われ
MSFlexGrid2(0),(1)共にMSFlexGrid2(1)が表示され、さら
にMSFlexGrid2(1)は同じ内容が2度表示されます。
どうか教えてください。
よろしくお願いします。

Private Sub sFileSave_Name()

'データの名前を付けて保存処理'
Dim lngCountl As Long   'ループのカウンタ'

Dim name As String   '名前'
Dim Shot As String    'シュート回数'
Dim ThreePShot As String  '3ポイントシュート成功回数'
Dim TwoPShot As String   '2ポイントシュート成功回数'
Dim FreeThrow As String   'フリースロー成功回数'
Dim Soutokuten As String   '総得点'
Dim Rebound As String   'リバウンド獲得回数'
Dim Assist As String   'アシスト成功回数'
Dim Steel As String   'スティール成功回数'
Dim BlockShot As String   'ブロックショット成功回数'
Dim Foul As String   'ファウル回数'
'ファイルナンバー変数を宣言します。'
Dim intFileNoA As Integer   'ファイルナンバーA'
Dim intFileNoB As Integer   'ファイルナンバーB'
Dim intFileNoC As Integer   'ファイルナンバーC'

    'キャンセルボタンが押されたらエラーとして通知する'
    CommonDialog1.CancelError = True
    
    'エラーの場合の飛び先指定'
    On Error GoTo exit_error
    
    'ダイアログボックスの形を決める'
    CommonDialog1.Filter = "シート (*.csv)|*.csv"
    CommonDialog1.Flags = cdlOFNExplorer Or cdlOFNLongNames Or _
        cdlOFNNoChangeDir Or cdlOFNOverwritePrompt
        
    '「名前を付けて保存」ダイアログボックスを表示'
    CommonDialog1.ShowSave
    
    'ファイル名をグローバル変数にセット'
    file_name = CommonDialog1.FileName
    
    intFileNoA = FreeFile
    Open file_name For Output As #intFileNoA
    
    With MSFlexGrid2(0)
        '一旦非表示にする'
        .Visible = False
        '現在の状態を再読み込み'
        For lngCountl = 1 To .Rows - 1
            .Row = lngCountl
            .Col = 1
            name = .Text
            .Col = 2
            Shot = .Text
            .Col = 3
            ThreePShot = .Text
            .Col = 4
            TwoPShot = .Text
            .Col = 5
            FreeThrow = .Text
            .Col = 6
            Soutokuten = .Text
            .Col = 7
            Rebound = .Text
            .Col = 8
            Assist = .Text
            .Col = 9
            Steel = .Text
            .Col = 10
            BlockShot = .Text
            .Col = 11
            Foul = .Text
            
            Write #intFileNoA, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                        Soutokuten, Rebound, Assist, Steel, Foul
        
        Next lngCountl
        
        Close #intFileNoA
        
        'カレントセルを反転表示に戻す'
        .Visible = True
        .Row = 1
        .Col = 1
        .TopRow = 1
        .SetFocus
        
    End With
    
    intFileNoB = FreeFile
    Open file_name For Output As #intFileNoB
    
    With MSFlexGrid2(1)
        '一旦非表示にする'
        .Visible = False
        '現在の状態を再読み込み'
        For lngCountl = 1 To .Rows - 1
            .Row = lngCountl
            .Col = 1
            name = .Text
            .Col = 2
            Shot = .Text
            .Col = 3
            ThreePShot = .Text
            .Col = 4
            TwoPShot = .Text
            .Col = 5
            FreeThrow = .Text
            .Col = 6
            Soutokuten = .Text
            .Col = 7
            Rebound = .Text
            .Col = 8
            Assist = .Text
            .Col = 9
            Steel = .Text
            .Col = 10
            BlockShot = .Text
            .Col = 11
            Foul = .Text
            
            Write #intFileNoB, name, Shot, ThreePShot, TwoPShot, FreeThrow, _
                        Soutokuten, Rebound, Assist, Steel, Foul
        
        Next lngCountl
        
        Close #intFileNoB
        
        intFileNoC = intFileNoA
        intFileNoC = intFileNoB
        Close #intFileNoC
        
        'カレントセルを反転表示に戻す'
        .Visible = True
        .Row = 1
        .Col = 1
        .TopRow = 1
        .SetFocus
        
    End With


'ラベル:終了処理'
exit_syori:

    'フォームに名前を付ける'
    frmGameStats.Caption = file_name
    
    Exit Sub
    
'エラー処理'
exit_error:

    'メッセージボックスを表示'
    MsgBox Err.Description
    
    Resume exit_syori
    
End Sub

投稿時間:2003/07/07(Mon) 22:19
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^5: MSFlexGridについての質問です。
> 以下のようにコードを書き直して見ました。
> 結果は保存時にエラーは出なくなりましたが、
> .csvファイルを再度開くとMSFlexGrid2(0)の内容は失われ
> MSFlexGrid2(0),(1)共にMSFlexGrid2(1)が表示され、さら
> にMSFlexGrid2(1)は同じ内容が2度表示されます。
> どうか教えてください。

もっと自分で考えて下さい。毎回コードを全て提示して
どこがおかしい? と聞いていたのでは相手にデバッグさせて
いるようなものです。基本的には自分で書いたコードは
自分でデバッグが原則です。


>     Open file_name For Output As #intFileNoA
>     With MSFlexGrid2(0)
>         Close #intFileNoA


>     Open file_name For Output As #intFileNoB
>     With MSFlexGrid2(1)
>         Close #intFileNoB

上記コードでは
>     Open file_name For Output As #intFileNoA

>     With MSFlexGrid2(0)

>>     With MSFlexGrid2(1)
の内容を上書きしていますよね。

これでは
>     With MSFlexGrid2(0)の中身は消えて
>     With MSFlexGrid2(1)の中身だけになりますよ。

    With MSFlexGrid2(0)の中身に
    With MSFlexGrid2(1)の中身を追加するなら

>     Open file_name For Output As #intFileNoB
の行は書かないか
     Open file_name For Append As #intFileNoA
にしましょう。

コードを1stepづつ良く考えてどう言う結果になるか、
ここでの自分の期待値は何か...を考えて下さい。

MSFlexGrid 以前にファイルの入出力をもっと良く理解して下さい。
AとBをマージしてCにするには...とかの問題です。

投稿時間:2003/07/07(Mon) 23:12
投稿者名:tea
Eメール:
URL :
タイトル:
解決しました。
NOBUさん、ありがとうございました。
おかげで解決しました。
知識不足で大変ご迷惑をおかけしました。