Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запись каждой строки в отдельный файл - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Запись каждой строки в отдельный файл
arudomanov Дата: Суббота, 16.07.2016, 09:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

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

[vba]
Код

Sub artlayers()
Dim c As Range, d As Range
For Each c In ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
Open ThisWorkbook.Path & "\" & c & ".html" For Output As #1
For Each d In Range(c, Cells(c.Row, Columns.Count).End(xlToLeft))
Print #1, d
Next
Close #1
Next
End Sub
[/vba]

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

Заранее благодарен за подсказки.
 
Ответить
СообщениеВсе привет. Есть задача сохранить каждую строчку в отдельный файл тхт, вроде нашел решение, но необходимо как то его доработать

[vba]
Код

Sub artlayers()
Dim c As Range, d As Range
For Each c In ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
Open ThisWorkbook.Path & "\" & c & ".html" For Output As #1
For Each d In Range(c, Cells(c.Row, Columns.Count).End(xlToLeft))
Print #1, d
Next
Close #1
Next
End Sub
[/vba]

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

Заранее благодарен за подсказки.

Автор - arudomanov
Дата добавления - 16.07.2016 в 09:12
Rioran Дата: Суббота, 16.07.2016, 12:35 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
arudomanov, здравствуйте.

Предлагаю попробовать так:

[vba]
Код
Sub Rio_ArtLayers()
    Dim c As Range, d As Range, S$, xSeparator$
    xSeparator = " // " ' Чем будут разделены данные одной строки
    For Each c In ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
        Open ThisWorkbook.Path & "\" & c & ".html" For Output As #1
        S = ""
        ' c.Offset(0, 1) - позволяет начать перебор ячеек для записи не с первой колонки
        For Each d In Range(c.Offset(0, 1), Cells(c.Row, Columns.Count).End(xlToLeft))
            S = S & xSeparator & d.Value
        Next
        ' Замена переноса строки на пробел. Если не работает - узнать, какой перенос строки используется вместо Chr(10)
        S = Replace(S, Chr(10), " ")
        S = Mid(S, Len(xSeparator) + 1) ' Обрезаем лишний разделитель в начале
        Print #1, S
        Close #1
    Next
End Sub
[/vba]
Без Ваших файлов сложно протестировать, так что ждём Вашей обратной связи =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Суббота, 16.07.2016, 12:35
 
Ответить
Сообщениеarudomanov, здравствуйте.

Предлагаю попробовать так:

[vba]
Код
Sub Rio_ArtLayers()
    Dim c As Range, d As Range, S$, xSeparator$
    xSeparator = " // " ' Чем будут разделены данные одной строки
    For Each c In ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
        Open ThisWorkbook.Path & "\" & c & ".html" For Output As #1
        S = ""
        ' c.Offset(0, 1) - позволяет начать перебор ячеек для записи не с первой колонки
        For Each d In Range(c.Offset(0, 1), Cells(c.Row, Columns.Count).End(xlToLeft))
            S = S & xSeparator & d.Value
        Next
        ' Замена переноса строки на пробел. Если не работает - узнать, какой перенос строки используется вместо Chr(10)
        S = Replace(S, Chr(10), " ")
        S = Mid(S, Len(xSeparator) + 1) ' Обрезаем лишний разделитель в начале
        Print #1, S
        Close #1
    Next
End Sub
[/vba]
Без Ваших файлов сложно протестировать, так что ждём Вашей обратной связи =)

Автор - Rioran
Дата добавления - 16.07.2016 в 12:35
alyonka1 Дата: Вторник, 02.08.2016, 16:55 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Rioran, спасибо Вам за код. Я вместо автора проверила все отлично работает:)
Но никак не могу понять как сохранить перенос строк внутри ячейки в новых созданных файлах, т.е. когда внутри каждой ячейки есть записи с новой строки и чтобы они также отображались с новой строки в файле.
Прикрепила пример файла.
К сообщению приложен файл: 1997627.xlsx (8.2 Kb)
 
Ответить
СообщениеRioran, спасибо Вам за код. Я вместо автора проверила все отлично работает:)
Но никак не могу понять как сохранить перенос строк внутри ячейки в новых созданных файлах, т.е. когда внутри каждой ячейки есть записи с новой строки и чтобы они также отображались с новой строки в файле.
Прикрепила пример файла.

Автор - alyonka1
Дата добавления - 02.08.2016 в 16:55
Матраскин Дата: Вторник, 02.08.2016, 17:17 | Сообщение № 4
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
alyonka1,
[vba]
Код
S = Replace(S, Chr(10), "<br>")
[/vba]

переносы меняем на перенос ^^,)


в интернете опять кто-то не прав
 
Ответить
Сообщениеalyonka1,
[vba]
Код
S = Replace(S, Chr(10), "<br>")
[/vba]

переносы меняем на перенос ^^,)

Автор - Матраскин
Дата добавления - 02.08.2016 в 17:17
alyonka1 Дата: Вторник, 02.08.2016, 17:26 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Матраскин, я забыла указать, что мне нужно не для Html, а просто обычный txt файл. <br> - это же перенос строки в html?
 
Ответить
СообщениеМатраскин, я забыла указать, что мне нужно не для Html, а просто обычный txt файл. <br> - это же перенос строки в html?

Автор - alyonka1
Дата добавления - 02.08.2016 в 17:26
Матраскин Дата: Вторник, 02.08.2016, 17:34 | Сообщение № 6
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
alyonka1, да, именно так. Для текстовых "\n" пойдёт


в интернете опять кто-то не прав
 
Ответить
Сообщениеalyonka1, да, именно так. Для текстовых "\n" пойдёт

Автор - Матраскин
Дата добавления - 02.08.2016 в 17:34
alyonka1 Дата: Вторник, 02.08.2016, 17:40 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Матраскин, странно, но у меня после выполнения макроса получается в файле такое: Строка 1_1\nСтрока 1_2\nСтрока 1_3\nСтрока 1_4\nСтрока 1_5, а не

Строка 1_1
Строка 1_2
Строка 1_3
Строка 1_4
Строка 1_5
 
Ответить
СообщениеМатраскин, странно, но у меня после выполнения макроса получается в файле такое: Строка 1_1\nСтрока 1_2\nСтрока 1_3\nСтрока 1_4\nСтрока 1_5, а не

Строка 1_1
Строка 1_2
Строка 1_3
Строка 1_4
Строка 1_5

Автор - alyonka1
Дата добавления - 02.08.2016 в 17:40
Матраскин Дата: Вторник, 02.08.2016, 17:42 | Сообщение № 8
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
alyonka1, я не проверил, тут другие правила

[vba]
Код
S = Replace(S, Chr(10), vbCrLf)
[/vba]


в интернете опять кто-то не прав
 
Ответить
Сообщениеalyonka1, я не проверил, тут другие правила

[vba]
Код
S = Replace(S, Chr(10), vbCrLf)
[/vba]

Автор - Матраскин
Дата добавления - 02.08.2016 в 17:42
Manyasha Дата: Вторник, 02.08.2016, 17:43 | Сообщение № 9
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
alyonka1, так попробуйте
[vba]
Код
S = Replace(S, Chr(10), vbcrlf)
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеalyonka1, так попробуйте
[vba]
Код
S = Replace(S, Chr(10), vbcrlf)
[/vba]

Автор - Manyasha
Дата добавления - 02.08.2016 в 17:43
Матраскин Дата: Вторник, 02.08.2016, 17:45 | Сообщение № 10
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Manyasha,


в интернете опять кто-то не прав
 
Ответить
СообщениеManyasha,

Автор - Матраскин
Дата добавления - 02.08.2016 в 17:45
alyonka1 Дата: Вторник, 02.08.2016, 17:53 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, Матраскин, Это просто мечта научиться так легко и быстро решать такие "головоломки" (лично для меня).
Огромнейшее Вам спасибо за помощь!

P.S. Плюсик смогу поставить только через 24 часа.
 
Ответить
СообщениеManyasha, Матраскин, Это просто мечта научиться так легко и быстро решать такие "головоломки" (лично для меня).
Огромнейшее Вам спасибо за помощь!

P.S. Плюсик смогу поставить только через 24 часа.

Автор - alyonka1
Дата добавления - 02.08.2016 в 17:53
naqrV Дата: Понедельник, 27.03.2017, 18:51 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
здравствуйте, искал решение, наткнулся на эту тему, спасибо, полезно!
Подскажите, а как доработать скрипт, чтобы он брал имена файлов из столбцов слева при сохранении?
колонки в файле выглядят так:

filename_1 text_1 filename_2 text_2 filename_3 text_4 filename_5 text_6 filename_7 text_7
может ли он сканировать наличие справа дополнительных колонок и в случае обнаружения также сохранять?

может, кто знает? спасибо
 
Ответить
Сообщениездравствуйте, искал решение, наткнулся на эту тему, спасибо, полезно!
Подскажите, а как доработать скрипт, чтобы он брал имена файлов из столбцов слева при сохранении?
колонки в файле выглядят так:

filename_1 text_1 filename_2 text_2 filename_3 text_4 filename_5 text_6 filename_7 text_7
может ли он сканировать наличие справа дополнительных колонок и в случае обнаружения также сохранять?

может, кто знает? спасибо

Автор - naqrV
Дата добавления - 27.03.2017 в 18:51
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!