• ベストアンサー

特定の列・行をテキストファイルに保存させたい

VB6.0とSPREAD6.0で スプレッドシート内のデータをCSVファイル化させるプログラムを組んでいます Private Sub Command1_Click()   Dim blnCHECK As Boolean   Dim strMsg As String   Dim strDate As String   Dim lngResponse As Long   Dim ret As Boolean   strDate = Format(Now(), "yyyymmddhhmmss") 'ファイル名   With spdTarget 'スプレッドシート     .Row = 1     While .Row <= .MaxRows       .Col = LNG_SPD_COL_CHECK 'チェックボックス       If .Value <> 0 Then         blnCHECK = True         strMsg = "選択データをファイル作成しますか?"         lngResponse = MsgBox(strMsg, vbQuestion + vbYesNo, "Exit Dialog")         If lngResponse = vbYes Then           ret = spdTarget.ExportToTextFile _           ("C:\Documents and Settings\ファイル作成先\" & strDate & ".csv", "", _           ",", Chr(13), ExportToTextFileColHeaders + _           ExportToTextFileCreateNewFile, _           "C:\Documents and Settings\ファイル作成先\" & strDate & ".log")         Else           Exit Sub         End If       End If     .Row = .Row + 1     Wend   End With   If blnCHECK = False Then     MsgBox "作成対象データを選んで下さい", vbExclamation   End If End Sub 上記のコードだと表内の全てのデータをCSVファイル化させる事はできるのですが 特定の行(1列目のチェックボックスで指定)や特定の列のみを選択してファイル化させる といった動きにさせるには、どうしたら良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.3

1、[プロジェクト]-[参照設定]で[Microsoft Scripting Runtime]にレ点を付けます。 2、標準モジュールに下記の関数を追加します。 以上で、 FileAppend ファイル名, 出力文字列 と書けば、行単位で任意のタイミングで書き出すことが可能になります。 FileAppend "", "" で、書き出し中のファイルを閉じます。 Public Function FileAppend(ByVal FileName As String, ByVal TEXT As String) As Boolean On Error GoTo Err_FileAppend   Static isOpen As Boolean   Static fso  As FileSystemObject   Static txs  As TextStream      If Not isOpen Then     isOpen = True     Set fso = New FileSystemObject     Set txs = fso.CreateTextFile(FileName, True)   End If   If Len(TEXT) > 0 Then     txs.WriteLine TEXT   End If   FileAppend = True Exit_FileAppend: On Error Resume Next   If Len(TEXT) = 0 Then     isOpen = False     Set txs = Nothing     Set fso = Nothing   End If   Exit Function Err_FileAppend:   Resume Exit_FileAppend End Function

yachiru
質問者

お礼

下記上記共に参考になるコード、有難うございます プログラムは本当に色々な手法があるんですね 勉強させて頂きました

その他の回答 (2)

noname#140971
noname#140971
回答No.2

Datas(0, 0) = "00" Datas(0, 1) = "_01" Datas(0, 2) = "02" Datas(1, 0) = "10" Datas(1, 1) = "_11" Datas(1, 2) = "12" Datas(2, 0) = "20" Datas(2, 1) = "_21" Datas(2, 2) = "22" 問:このようなデータから長さ=3の条件に合致するのを抜き出してCSVに出力せよ。 <c:\temp\test.csv> _01 _11 _21 これが出力結果です。 Option Compare Database Option Explicit Dim Datas(2, 2) As String Private Sub Form_Load()   Datas(0, 0) = "00"   Datas(0, 1) = "_01"   Datas(0, 2) = "02"   Datas(1, 0) = "10"   Datas(1, 1) = "_11"   Datas(1, 2) = "12"   Datas(2, 0) = "20"   Datas(2, 1) = "_21"   Datas(2, 2) = "22" End Sub Private Sub コマンド0_Click()   Dim I      As Integer   Dim J      As Integer      For I = 0 To 2     For J = 0 To 2       If Len(Datas(I, J)) = 3 Then         FileAppend "C:\Temp\Test.csv", Datas(I, J)       End If     Next J   Next I   FileAppend "", "" ' <-- ファイルを閉じるコード! End Sub このように Microsoft Scripting Runtime を利用すれば非手続き的に書くことも可能です。 ※FileAppend 関数は、すぐに補足します。

回答No.1

とりあえず、ExportToTextFile を使用せずに、Open ステートメント + Print ステートメントで出力すればできますよね。

yachiru
質問者

補足

アドバイス、ありがとうございます 実は当方VB初心者でして、Printステートメントにどういったコードを書けば スプレッドシート内のデータを取り出す事ができるのかが判りません 宜しければ、スプレッドシート内のデータを出力するコードなどを教えて頂けると助かります

関連するQ&A