Страницы: 1
RSS
Вывести данные из Excel в текстовый файл, Экспорт данных
 
Через разные формулы, получаю строку с данными текст и числа. Всего около 5-6 ячеек занято, мне нужно взять данные из всей строки и сохранить в текстовом файле, но так чтобы в текстовом файле данные разделялись точками, обычное разделение сохраняет через пробелы.

И вторая строчка, там большое количество пробелов между данными. Первую строку можно сделать через "Сцепить", вторую аналогично только пробелов добавить ?

Файл Excel и, образец файла Txt который нужен прикрепил к сообщению.
Изменено: Wh1Te - 03.09.2015 15:13:37
 
Wh1Te, и Вам здравствовать. В файле экселя только одна строка.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Пример записи в файл тхт
Код
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 написал: В файле экселя только одна строка.
Поэтому как получить все данные из файла думайте самостоятельно
Изменено: TSN - 04.09.2015 09:12:01
 
Большое спасибо за написанный скрипт. Очень облегчает задачу вывода в txt. Чуть чуть донастрою уже сам)
Изменено: Whitee - 08.09.2015 23:07:52
 
Whitee, и вот зачем Вы процитировали всё целиком? Кнопка цитирования не для ответа. Исправьте свой #4.
 
Столкнулся с одним недостатком. В текстовом файле все строки идут друг за другом одной строчкой. А нужно чтобы в txt было так же как и в Excele осуществлялся перенос на следующую строчку

Текстовый файл - в каком виде нужно получить данные. (пробел, запятая, точка не важно. Потом сам изменю).
Главное, чтобы вы подсказали, что и куда надо дописать чтобы был перенос строки. Диапазон строк 300-500 (в итоге диапазон оставлю один постоянный)
 
Цитата
Whitee написал: Столкнулся с одним недостатком.
Цитата
JayBhagavan написал: В файле экселя только одна строка.
Цитата
из Правил форума:
2.3. Приложите файл(ы) с примером (общим весом не более 100 Кб) в реальной структуре
Вы всегда стремитесь устранять свои ошибки за чужой счёт?
Цитата
Whitee написал: Чуть чуть донастрою уже сам)
перенос на следующую строчку - это как раз "чуть-чуть"
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Код
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
Изменено: TSN - 09.09.2015 08:48:08
 
Цитата
Для разнообразия вариантов еще один.
Работает превосходно, спасибо
 
вопрос решен самостоятельно, всем спасибо за "помощь"))
Изменено: jeka-irbis - 19.09.2019 22:31:41
Страницы: 1
Читают тему
Наверх