- ベストアンサー
特定の列・行をテキストファイルに保存させたい
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列目のチェックボックスで指定)や特定の列のみを選択してファイル化させる といった動きにさせるには、どうしたら良いのでしょうか?
- みんなの回答 (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
その他の回答 (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 関数は、すぐに補足します。
- tsukasa-12r
- ベストアンサー率65% (358/549)
とりあえず、ExportToTextFile を使用せずに、Open ステートメント + Print ステートメントで出力すればできますよね。
補足
アドバイス、ありがとうございます 実は当方VB初心者でして、Printステートメントにどういったコードを書けば スプレッドシート内のデータを取り出す事ができるのかが判りません 宜しければ、スプレッドシート内のデータを出力するコードなどを教えて頂けると助かります
お礼
下記上記共に参考になるコード、有難うございます プログラムは本当に色々な手法があるんですね 勉強させて頂きました