VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 グリッド(MSFlexGrid)関係のメニュー
1.MSFlexGrid の主要プロパティ・メソッド一覧表
2.MSFlexGrid ワンポイントテクニック集(その1)
3.MSFlexGrid ワンポイントテクニック集(その2)
4.MSFlexGrid で Excel のようにセルに直接データを入力する
5.MSFlexGrid/MSHFlexGridへのデータ表示設定色々
6.MSFlexGrid/MSHFlexGrid の表示データをファイルに保存方法色々
7.MSFlexGrid/MSHFlexGrid で項目(科目)別集計をする
8.MSFlexGrid/MSHFlexGrid でコピー・アンド・ペースト色々
9.MSFlexGrid/MSHFlexGrid で列幅設定/行の高さ設定色々
10.MSFlexGrid/MSHFlexGrid にチェックボックスを表示する及び操作色々
11.MSFlexGrid/MSHFlexGrid に表示中のデータを罫線付きで印刷する
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、MSFlexGrid 関係で当サイト内に掲載しているサンプルの紹介


6.MSFlexGrid/MSHFlexGrid の表示データをファイルに保存方法色々
1.Write # ステートメントでの保存(データ全てを、"" で囲う)
2.Write # で列幅 0 を除いての保存(データ全てを、"" で囲う)
3.Print # ステートメント で列幅 0 を除いての保存(データ全てを、"" で囲わない)
4.Print # ステートメント で列幅 0 を除いての保存(データ全てを、"" で囲う)
5. 
6. 
7.保存処理速度比較及び保存処理プログラム使用上の留意事項
8. 
9. 
10. 
11. 
12. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:
使用 API:
その他 :プロジェクト→コンポーネント→コントロールで Microsoft FlexGrid Control 6.0(SP6) 又は、
    :Microsoft Hierarchical FlexGridにチェックを入れ、表示されたコントロールをフォームに貼り付けて下さい。
    :尚、当サイトで掲載している MSFlexGrid / MSFlexGrid 関係のサンプルは、上記と同様とし、今後は省略します。
このページのトップへ移動します。 1.Write # ステートメントでの保存(データ全てを、"" で囲う)
保存したデータ全てを、"" で囲まれています。
エクセルに表示しても数字や日付データが問題なく表示される
Write # ステートメント
Write # ステートメントを使用して書き込んだデータは、Input # ステートメントで読み込みます。

Private Sub Command1_Click()
'  On Error Resume Next
  Dim i     As Long
  Dim j     As Long
  Dim intFileNo As Integer

  intFileNo = FreeFile
  Open "SaveTest1.csv" For Output As #intFileNo
  With MSHFlexGrid1
    For i = 0 To .Rows - 1
      For j = 0 To .Cols - 2
        Write #intFileNo, .TextMatrix(i, j),    'セルデータが続く場合
      Next j
      Write #intFileNo, .TextMatrix(i, .Cols - 1)   '行末のデータのみ
    Next i
  End With
  Close #intFileNo
End Sub

このページのトップへ移動します。 2.Write # で列幅 0 を除いての保存(データ全てを、"" で囲う)

Write # ステートメント
Write # ステートメントを使用して書き込んだデータは、Input # ステートメントで読み込みます。

Private Sub Command2_Click()
'  On Error Resume Next
  Dim i     As Long
  Dim j     As Long
  Dim intFileNo As Integer
  Dim CellsData As Variant
  Dim n     As Integer
  Dim SaveCols As Integer
  '保存する列数を事前に調べて置く
  With MSHFlexGrid1
    For i = 0 To .Cols - 1
      If .ColWidth(i) = -1 Or .ColWidth(i) > 30 Then
        SaveCols = SaveCols + 1
      End If
    Next i
  End With

  intFileNo = FreeFile
  '保存したファイルを確認しやすいように拡張子を txt にして保存
  '(メモ帳で保存した状態が確認できるので、実使用時は、.csv で保存)
  Open "SaveTest2.csv" For Output As #intFileNo
  With MSHFlexGrid1
    For i = 0 To .Rows - 1
      n = 0
      For j = 0 To .Cols - 1
        If .ColWidth(j) = -1 Or .ColWidth(j) > 30 Then
          CellsData = .TextMatrix(i, j)
          n = n + 1
          ' "" を付加する、しないはお好みで
          If i = 0 Or j = 1 Then
            CellsData = CellsData
          Else
            CellsData = CellsData
          End If
          If n = SaveCols Then
            Write #intFileNo, CellsData  '行末のデータのみ
          Else
            Write #intFileNo, CellsData, 'セルデータが続く場合
          End If
        End If
      Next j
    Next i
  End With
  Close #intFileNo
End Sub


このページのトップへ移動します。 3.Print # ステートメント で列幅 0 を除いての保存(データ全てを、"" で囲わない)

Print # ステートメント
通常、Print # ステートメントを使用して書き込んだデータは、Line Input # ステートメントまたは Input 関数を使用して読み込みます。
保存したデータは、"" で囲まれていません。

Private Sub Command3_Click()
'  On Error Resume Next
  Dim i     As Long
  Dim j     As Long
  Dim intFileNo As Integer
  Dim TxtLine  As String
  intFileNo = FreeFile

  Open "SaveTest3.csv" For Output As #intFileNo
  With MSHFlexGrid1
    For i = 0 To .Rows - 1
      TxtLine = ""
      For j = 0 To .Cols - 1
        '手動で列幅を設定した場合0に上手くならないので大きめに設定
        If .ColWidth(j) = -1 Or .ColWidth(j) > 30 Then
          TxtLine = TxtLine & .TextMatrix(i, j) & ","
        End If
      Next j
      If Right$(TxtLine, 1) = "," Then
        TxtLine = Left$(TxtLine, Len(TxtLine) - 1)
        Print #intFileNo, TxtLine
      End If
    Next i
  End With
  Close #intFileNo
End Sub

このページのトップへ移動します。 4.Print # ステートメント で列幅 0 を除いての保存(データ全てを、"" で囲う)

Print # ステートメント
通常、Print # ステートメントを使用して書き込んだデータは、Line Input # ステートメントまたは Input 関数を使用して読み込みます。
保存したデータ全てを、"" で囲む。

Private Sub Command4_Click()
'  On Error Resume Next
  Dim i     As Long
  Dim j     As Long
  Dim intFileNo As Integer
  Dim TxtLine  As String
  intFileNo = FreeFile

  '保存したファイルを確認しやすいように拡張子を txt にして保存
  '(メモ帳で保存した状態が確認できるので、実使用時は、.csv で保存)
  Open "SaveTest4.txt" For Output As #intFileNo
  With MSHFlexGrid1
    For i = 0 To .Rows - 1
      TxtLine = ""
      For j = 0 To .Cols - 1
        '手動で列幅を設定した場合0に上手くならないので大きめに設定
        If .ColWidth(j) = -1 Or .ColWidth(j) > 30 Then
          TxtLine = TxtLine & Chr$(34) & CStr(.TextMatrix(i, j)) & Chr$(34) & ","
        End If
      Next j
      If Right$(TxtLine, 1) = "," Then
        TxtLine = Left$(TxtLine, Len(TxtLine) - 1)
        Print #intFileNo, TxtLine
      End If
    Next i
  End With
  Close #intFileNo
End Sub

このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 7.保存処理速度比較及び保存処理プログラム使用上の留意事項
データ件数1万件での保存処理速度比較

 1.での方法  0.28 秒
 2.での方法  0.45 秒
 3.での方法  0.39 秒
 4.での方法  0.49 秒

保存した、CSV ファイルをエクセルで読み込んだ場合、数字が数値に変換される等で困る場合は、拡張子を TXT にして保存し、エクセルで読み込み時に区切りをカンマ(,)で設定し、必要個所の型を指定してから読み込むようにして下さい。

このページのトップへ移動します。 8. 



このページのトップへ移動します。 9.


このページのトップへ移動します。 10.


このページのトップへ移動します。 11.


このページのトップへ移動します。 12.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
フレキシブルグリッド (MSFlexGrid) コントロール MSFlexGrid MSHFlexGrid の表示データを CSV ファイルに保存方法色々 ダブルクォーテーションで囲う
階層フレキシブルグリッド (MSHFlexGrid) コントロール ADO ActiveX Data Objects Microsoft Hierarchical FlexGrid MSHFlexGrid コントロール
スキーマファイル Microsoft OLE DB Provider for Microsoft Jet ダブルクォーテーション囲いのCSVファイルで保存

このページのトップへ移動します。