|
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
|
|