Через разные формулы, получаю строку с данными текст и числа. Всего около 5-6 ячеек занято, мне нужно взять данные из всей строки и сохранить в текстовом файле, но так чтобы в текстовом файле данные разделялись точками, обычное разделение сохраняет через пробелы.
И вторая строчка, там большое количество пробелов между данными. Первую строку можно сделать через "Сцепить", вторую аналогично только пробелов добавить ?
Файл Excel и, образец файла Txt который нужен прикрепил к сообщению.
Sub WriteTXT()
Dim oRange As Range, sTemp As String, vl
Dim FileTxt As String, F As Integer
'''Чтение данных из книги Ексель, из диаппазона "A3:F3"
With ThisWorkbook
Set oRange = .Sheets("Лист1").Range("A3:F3")
For Each vl In oRange
sTemp = sTemp & vl.Value & "."
Next
sTemp = Left(sTemp, Len(sTemp) - 1)
End With
''' Формирование наименования файла и Запись данных в текстовый файл
''' Это самы простой способ записи.
FileTxt = "Данные Ексель " & Format(Now, "dd-mm-yy-hh-mm-ss") & ".txt"
F = FreeFile
Open ThisWorkbook.Path & Application.PathSeparator & FileTxt For Output As #F
Print #F, sTemp
Close #F
MsgBox "Файл сформирован: " & ThisWorkbook.Path & Application.PathSeparator & FileTxt, 64, "Excel"
End Sub
Цитата
JayBhagavan написал: В файле экселя только одна строка.
Поэтому как получить все данные из файла думайте самостоятельно
Столкнулся с одним недостатком. В текстовом файле все строки идут друг за другом одной строчкой. А нужно чтобы в txt было так же как и в Excele осуществлялся перенос на следующую строчку
Текстовый файл - в каком виде нужно получить данные. (пробел, запятая, точка не важно. Потом сам изменю). Главное, чтобы вы подсказали, что и куда надо дописать чтобы был перенос строки. Диапазон строк 300-500 (в итоге диапазон оставлю один постоянный)
Sub WriteTXT_V2()
Dim a(), b(), c()
Dim i&, j&
'--------------------
a = Sheets("Лист1").UsedRange.Value
ReDim b(1 To UBound(a) - 2)
For i = 3 To UBound(a)
ReDim c(1 To UBound(a, 2))
For j = 1 To UBound(c)
c(j) = a(i, j)
Next
b(i - 2) = Join(c, vbTab)
Next
With CreateObject("ADODB.Stream")
.Type = 2: .Charset = "utf-8"
.Open
.WriteText Join(b, vbCrLf)
.SaveToFile ThisWorkbook.Path & "\как надо.txt", 2
.Close
End With
Beep
End Sub
Whitee написал: нужно чтобы в txt было так же как и в Excele осуществлялся перенос на следующую строчку
Для разнообразия вариантов еще один.
Код
Sub WriteTXT1()
Dim arr, sTemp As String, x As Long, n As Long, F As Integer
Dim FileTxt As String, FullFileName As String
'''Чтение данных из книги Ексель, из полей "A:F" - динамически
With ThisWorkbook.Sheets("Лист1")
arr = .Range(.Cells(3, 1), .Cells(Rows.Count, 7).End(xlUp)).Value
For x = 1 To UBound(arr)
For n = 1 To 7: sTemp = sTemp & arr(x, n) & ".": Next n
sTemp = Left(sTemp, Len(sTemp) - 1) & vbCrLf
Next x
End With
Erase arr
''' Формирование наименования файла и Запись данных в текстовый файл
FileTxt = "Данные Ексель " & Format(Now, "dd-mm-yy-hh-mm-ss") & ".sdr"
FullFileName = ThisWorkbook.Path & Application.PathSeparator & FileTxt
''' Стандартный способ записи текстового файла в VBA.
F = FreeFile
Open FullFileName For Output As #F: Print #F, sTemp: Close #F
MsgBox "Файл сформирован: " & FullFileName, 64, "Excel"
End Sub