Как сохранить столбец в *.txt файл?

Программирование на Visual Basic for Applications
qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 152
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Как сохранить столбец в *.txt файл?

Сообщение qwertyhp » 21.05.2013 (Вт) 16:46

Здравствуйте!
Необходимо сохранить столбец данных в текстовый файл. Делать это циклом по ячейкам - долго. Вручную - скопировать в Excel'е и через буфер обмена вставить в "Блокнот" - неприемлемо.
Пожалуйста, подскажите - можно ли как-то программно взять столбец и сохранить его в текстовый файл? И как это сделать? Чувствую, что можно, но не соображу - как.
Спасибо.
Пятачок Forever! :)

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 70
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как сохранить столбец в *.txt файл?

Сообщение Template » 22.05.2013 (Ср) 21:10

Ежели в других столбцах нет данных, то можно, к примеру, активировать нужный лист и сохранить рабочую книгу как текстовый файл, если есть, то ... несколько вариантов, но хотелось бы знать сколько ~ ячеек нам придется обрабатывать.

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 70
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как сохранить столбец в *.txt файл?

Сообщение Template » 22.05.2013 (Ср) 21:26

P.S. Как вариант, цикл, но не по ячейкам :)

Код: Выделить всё
Sub SaveColumnToText()

    Dim varArray As Variant, lngRow As Long, intFreeNum As Integer
   
    With ThisWorkbook.Worksheets("Лист1")
         varArray = .Range(.Cells(1, "A"), .Cells(.Rows.Count, "A").End(xlUp)).Value
    End With
   
    intFreeNum = FreeFile
    Open ThisWorkbook.Path & "\Column_A_Data.txt" For Output As #intFreeNum
         For lngRow = 1 To UBound(varArray)
             Print #intFreeNum, varArray(lngRow, 1)
         Next
    Close #intFreeNum

End Sub

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как сохранить столбец в *.txt файл?

Сообщение Alec » 22.05.2013 (Ср) 22:35

А скопировать столбец в новую книгу, ее сохранить в текстовый файл, а потом закрыть?
Иногда лучше вовремя остановиться...
И начать заново!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4248
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как сохранить столбец в *.txt файл?

Сообщение iGrok » 23.05.2013 (Чт) 1:25

Alec писал(а):А скопировать столбец в новую книгу, ее сохранить в текстовый файл, а потом закрыть?

Мъсье знает толк в извращениях. :mrgreen:

Имхо, вариант с циклом от Template - оптимален.
label:
cli
jmp label

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2751
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 23.05.2013 (Чт) 10:27

Alec писал(а):А скопировать столбец в новую книгу, ее сохранить в текстовый файл, а потом закрыть?

Эм.. А просто скопировать и взять из буфера текст?
И вообще, надо быть осторожнее с копированием, т. к. в буфере может быть что-то полезное...

PS: А почему цикл по ячейкам - это долго?

qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 152
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Как сохранить столбец в *.txt файл?

Сообщение qwertyhp » 05.06.2013 (Ср) 15:19

Спасибо Всем!
Qwertiy, Ваше решение очень интересное (не только для этого случая). Как я сам не додумался... :)
Пятачок Forever! :)

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2751
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.06.2013 (Ср) 16:09

Не за что :)
А чем интересное моё решение? Вроде бы всё стандартно...

Starik
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 05.11.2002 (Вт) 16:55
Откуда: Russia

Re: Как сохранить столбец в *.txt файл?

Сообщение Starik » 22.07.2013 (Пн) 16:20

Sub Export ()
Dim lngRow As Long
Dim intCol As Integer
Open ThisWorkbook.Path & "\1.txt" For Output As #1
For lngRow = 1 To Selection.Rows.Count
For intCol = 1 To Selection.Columns.Count
Write #1, Selection.Cells(lngRow, intCol).Value;
Next intCol
Print #1, ""
Next lngRow
Close #1
End Sub


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing-бот и гости: 3

    TopList