投稿日 | : 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
これでどうでしょう?