MSFlexgridを使ってのCSVファイル読み書き色々(VB6.0)_1 (No.1の個別表示) [スレッド一覧へ] |
- 日時: 2009/12/28 10:29
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[ファイル入出力][グリッド関係][] * * キーワード:CSV,MSHFlexgrid,,,, * *********************************************************************************** ----------------------------------------------------------------------------------- Re: MS(H)Flexgrid→CSVファイル.. - 花ちゃん 2007/09/13-21:24 No.10192 -----------------------------------------------------------------------------------
> ダブルクォーテーション(")がないと、CSVをEXCELで開いた際に > 数値型だとおかしく表示されるかな?と思っておりました・・・。
"88" としてもExcelで自動的に型を判断するので、数値になってしまいます。 http://hanatyan.sakura.ne.jp/vbhlp/Excel11.htm http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=128&no=12
全て、"" として保存するなら下記で。
Private Sub Command1_Click() ' On Error Resume Next Dim i As Long Dim j As Long Dim intFileNo As Integer Dim TxtLine As String intFileNo = FreeFile Open App.Path & "\Test.csv" For Output As #intFileNo With MSFlexGrid1 For i = 0 To .Rows - 1 TxtLine = "" For j = 0 To .Cols - 1 '手動で列幅を設定した場合0に上手くならないので大きめに設定 If .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 MsgBox "保存しました" End Sub
--------------------------------------------------------------------------- 全ての出力データに ""(Chr$(34)) が付加されます。
|
MSFlexgridを使ってのCSVファイル読み書き色々(VB6.0)_2 (No.2の個別表示) [スレッド一覧へ] |
- 日時: 2009/12/28 10:30
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[ファイル入出力][グリッド関係][] * * キーワード:CSV,MSHFlexgrid,,,, * ***********************************************************************************
元質問:MS(H)Flexgrid→CSVファイルへ出.. - さとり 2007/09/13-14:47 No.10187
----------------------------------------------------------------------------------- Write # ステートメントを使った方法 - 花ちゃん 2007/09/14-14:26 No.10194 -----------------------------------------------------------------------------------
ついでにWrite # ステートメントを使った方法を投稿しておきます。
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 '保存する列数を事前に調べて置く For i = 0 To MSFlexGrid1.Cols - 1 If MSFlexGrid1.ColWidth(j) > 30 Then SaveCols = SaveCols + 1 End If Next i intFileNo = FreeFile Open "SaveTest.csv" For Output As #intFileNo With MSFlexGrid1 For i = 0 To .Rows - 1 n = 0 For j = 0 To .Cols - 1 If .ColWidth(j) > 30 Then CellsData = .TextMatrix(i, j) n = n + 1 ' "" を付加する、しないはお好みで If i = 0 Or j = 1 Then CellsData = CStr(CellsData) Else CellsData = CSng(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 MsgBox "保存しました" End Sub
|
MSFlexgridを使ってのCSVファイル読み書き色々(VB6.0)_3 (No.3の個別表示) [スレッド一覧へ] |
- 日時: 2009/12/28 10:30
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[ファイル入出力][グリッド関係][] * * キーワード:CSV,MSHFlexgrid,,,, * ***********************************************************************************
----------------------------------------------------------------------------------- Write # ステートメントを使った通常の保存方法 - 花ちゃん 2007/09/14 -----------------------------------------------------------------------------------
Write # ステートメントを使った全ての表示データを保存する方法を投稿しておきます。 1行分のデータを1度に書き込むような通常の方法と違って列数が多い場合の書き込み等に 適しているかも。
Private Sub Command1_Click() '保存したデータ全てを、"" で囲まれています。 ' On Error Resume Next Dim i As Long Dim j As Long Dim intFileNo As Integer intFileNo = FreeFile '保存したファイルを確認し易いように拡張子を txt にして保存 '(メモ帳で保存した状態が確認できるので、実使用時は、.csv で保存) Open "SaveTest.txt" For Output As #intFileNo With MSFlexGrid1 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 MsgBox "保存しました" End Sub
|
MSFlexGridでLine Input #を使ってのCSVファイルの読込_4(VB6.0) (No.4の個別表示) [スレッド一覧へ] |
- 日時: 2011/03/28 15:20
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[ファイル入出力][グリッド関係][] * * キーワード:CSV,MSHFlexgrid,,,, * ***********************************************************************************
----------------------------------------------------------------------------------- Line Input # ステートメントを使ってのCSVファイルの読込表示 - 花ちゃん 2007/09/14 ----------------------------------------------------------------------------------- データに合せて固定列・固定行等の設定は変更して下さい。 あくまでも、CSV ファイルの表示例のサンプルなので、表示速度等に拘るなら他の方法を 使って下さい。
Private Sub Form_Load() '------------------------------------------------- 'コントロール類の初期設定 Form1.Move 0, 0, 9000, 4000 With MSFlexGrid1 .Move 45, 45, 5500, 3400 .FixedRows = 1 .FixedCols = 0 .Rows = 1 .Cols = 0 .AllowUserResizing = flexResizeBoth .RowHeightMin = 300 End With '------------------------------------------------- 'CSV ファイルを読み込み MSFlexGrid に表示 Dim intFileNo As Integer 'ファイルNo Dim TextLine As String Dim CellsData As Variant Dim lngCount As Long Dim i As Long intFileNo = FreeFile 'シーケンシャル入力モードで Test.csv をオープン 'ファイルのPATHは別途設定して下さい。 Open "Test.csv" For Input As #intFileNo Do Until EOF(intFileNo) 'EOF(intFileNo)が True になるまで実行 Line Input #intFileNo, TextLine '1行全体を変数に読み込む TextLine = Replace(TextLine, Chr$(34), "") ' "" を取り除く CellsData = Split(TextLine, ",") 'カンマ区切りで列データを分割 If MSFlexGrid1.Cols < UBound(CellsData) + 1 Then 'データの列数に合せて、MSFlexGrid の列数を設定 MSFlexGrid1.Cols = UBound(CellsData) + 1 End If lngCount = lngCount + 1 '行数をカウント MSFlexGrid1.Rows = lngCount '行数を追加 For i = LBound(CellsData) To UBound(CellsData) 'MSFlexGrid のセルにデータを書込み MSFlexGrid1.TextMatrix(lngCount - 1, i) = CellsData(i) Next i Loop Close #intFileNo End Sub
|
|