• 締切済み

VB6.0でのエクセルのセルのクリア

VB6.0でのエクセルのセルのクリア VB6.0でエクセルからCSVファイルを作成しています。 それ自体はできているのですが、CSVファイルを作成後に 元のエクセルのセルをクリアしたいと思っております。 5行目以降のB・C・D・Eの列に入っている値(すべて数値が 入っています)をBに数値が入っている行までクリアしたいとい うのが希望です。 どういう構文で実行すればよいか、アドバイスいただければ 幸いです。宜しくお願い致します。

みんなの回答

回答No.2

CSVファイルに保存していると言うことは ","(カンマ)区切りのファイルだと思います。 まずはそのCSVファイルをエクセルで開くのではなく メモ帳等で開いてみて中身を確認してください。 例 1,123,3,444,555,33 上記の例のようになっているはずです。 では消すには?? 例の4つ目(セルで言うとD列)444を消すとした場合 1,123,3,,555,33 とすればいい 行はどうやって知ればいいのか??  行は「vbCrLf」(改行)が行の数となりますので  5行目以降ということは改行を5個カウントした後と言うことですね 列はどうやってしればいいのか??  列はカンマの数で分かると思います

  • lichimi
  • ベストアンサー率32% (64/194)
回答No.1

Excelのファイルへのアクセスはどのように行っていますか? Microsoft Excel ObjectLibraryでアクセスしているのか DAOなどでアクセスしているのか その他色々なアプローチがありますので、回答が出来ません

takazou
質問者

補足

申し訳ありませんでした。質問が抽象的過ぎました。 実際の構文は、以下のものです。 Dim fnm As String Dim fnm10 As String Dim rec As String Dim i As Long Dim j As Long Dim exl As Object Dim myline As String Dim myLastRow As Long Dim wrk1 As Long Dim wrk2 As Long Dim wrk3 As Long Dim wrk4 As Long Dim wrk5 As Long Dim wrk6 As Long Dim k As Long Dim a As Long fnm = "C:\test.xlsx" fnm10 = "C:\test.csv" Set exl = CreateObject("Excel.Application") exl.Application.Visible = False step1: exl.Application.workbooks.Open FileName:=fnm exl.Application.worksheets("Sheet1").Activate Open fnm10 For Output As #1 For i = 5 To 30000 If (exl.Cells(i, 2)) = "" Or IsNull(exl.Cells(i, 1)) Then Exit For myline = "" myline = myline + "850" + "," For j = 2 To 5 If (j = 2) Or (j = 3) Or (j = 4) Or (j = 5) Then If Not (IsNumeric(exl.Cells(i, j))) Or (IsNull(exl.Cells(i, j))) Then wrk2 = 0 Else wrk2 = exl.Cells(i, j) End If If (j = 2) Then myline = myline + Format(exl.Cells(i, j), "00000000") End If If (j = 3) Then myline = myline + Format(exl.Cells(i, j), "0000000000000") End If If (j = 4) Then myline = myline + Format(exl.Cells(i, j), "0000000") End If If (j = 5) Then myline = myline + Format(exl.Cells(i, j), "000") End If End If If (j < 5) Then myline = myline + "," End If Next Print #1, myline Next Close #1 *----------------------- ここまでがエクセルからCSVに書き出す部分です。 *----------------------- この後、エクセルのセルのクリアをしたいのが希望です exl.Sheets(1).Name = "Sheet1" i = 5 Do Until i = 1001 For j = 2 To 5 exl.worksheets(1).Cells(i, j).Clear Next i = i + 1 Loop exl.saveas fnm *---------------------- この様にすると、クリアも何もせずに終了してしまいます。 恐れ入りますが、宜しくお願い致します。