VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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

これでどうでしょう?


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -