Ваш первый вывод использует стандартные «зоны печати» в каждом 14-м столбце (позиции 1, 15, 29, ...), которые вы получаете, печатая с добавлением comma
.............|.............|.............|.............|.............|.............|
XXX-XX-XXXX 20190111 AA 123 NAME NAME XXXXX
Ваш желаемый вывод начинается со следующего кратного 8 символов (1, 9, 17, ...)
.......|.......|.......|.......|.......|.......|.......|.......|.......|
XXX-XX-XXXX.....20190111........AA......123.....NAME....NAME....XXXXX
Вы можете установить следующую позицию печати в вашем файле с помощью Seek
Private Sub SaveAsText()
Dim rng As Range
Dim r As Long, c As Long
Set rng = ActiveSheet.Range("A1:G1")
Dim file1 As Integer
file1 = FreeFile
Open ThisWorkbook.Path & "\test.txt" For Output As file1
For r = 1 To rng.Rows.Count
For c = 1 To rng.Columns.Count
If c = 1 Then
Print #file1, CStr(rng.Cells(r, c).Value);
Else
Seek #file1, (Seek(file1) \ 8 + 1) * 8 + 1
Print #file1, CStr(rng.Cells(r, c).Value);
End If
Next c
Next r
Close #file1
End Sub
Дополнительные советы:
Используйте Freefile
, чтобы получить следующий бесплатный номер файла(это может быть 1).
Используйте CStr()
, чтобы запретить автоматически добавленные пробельные символы до и после числовых значений.