|
えーと、えーと;;;
EとFにはエクセルデータになんか入れるんでしょか。
▼ポンタ さん:
>Range("E:F") を作業列として使うコードに書き換えてみましたので、
>こちらもお試しください。
>
>Sub test()
> Dim objFs As Object, objText As Object
> Dim FileName As String
> Dim MyStr As String
> Dim i As Long
> FileName = "C:\My Documents\test.txt"
> Set objFs = CreateObject("Scripting.FileSystemObject")
> Set objText = objFs.OpenTextFile(FileName, 2, True)
> With Range("C1", Range("C65536").End(xlUp))
> .Offset(0, 2).Resize(, 2).FormulaR1C1 = "=LEN(R[0]C[-2])+1"
> End With
> Range("C65536").End(xlUp).Offset(1, 2).FormulaR1C1 = "=MAX(R1C5:R[-1]C[0])"
> Range("C65536").End(xlUp).Offset(1, 3).FormulaR1C1 = "=MAX(R1C6:R[-1]C[0])"
> For i = 1 To Range("A65536").End(xlUp).Row
> 'MyStrにA列の値をセット MyStr = "0001"
> MyStr = Cells(i, 1).Value
> 'MyStrの文末にB列の値を付け足す MyStr="0001030625"
> MyStr = MyStr & Cells(i, 2).Value
> 'Len(Cells(i, 3).Valueで"1000"の文字数を数える = 4
> '桁数1 = 6だから String(2, " ")となる。これは、スペース2文字(" ")を返す
> 'よって MyStr=MyStr="0001030625 "となる
> MyStr = MyStr & String(Range("C65536").End(xlUp).Offset(1, 2) _
> - Len(Cells(i, 3).Value), " ")
> 'C列の値を付け足す MyStr="0001030625 1000"
> MyStr = MyStr & Cells(i, 3).Value
> 'スペースを付け足す MyStr="000130625 1000 "
> MyStr = MyStr & String(Range("C65536").End(xlUp).Offset(1, 3) _
> - Len(Cells(i, 4).Value), " ")
> 'D列の値を付け足す MyStr="000130625 1000 50"
> MyStr = MyStr & Cells(i, 4).Value
> 'テキストファイルに書き込み
> Call objText.WriteLine(MyStr)
> Next
> objText.Close
> Set objText = Nothing
> Set objFs = Nothing
> Range("E:F").ClearContents
>End Sub
|
|