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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка части листа в блокнот и сохранение с новым именем - Мир MS Excel

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

Excel 2013
Друзья, первый опыт написания простого макроса для рутинной работы, так что опыта и знаний в этой области почти нет. Зато есть макрос записанный макрорекодером, который внутри обрабатывает мои данные, потом копирует нужные ячейки, нашла код который открывает чистый блокнот и вставляет их, с этим все нормально. Но сохранять приходится в ручную, причем файлов будет много и каждый раз писать уникальное имя файла очень затруднительно. В идеале имя должно копироваться из ячейки или идти по порядку +1.
Буду очень очень благодарна!
Вот что есть:
[vba]
Код
Range("B2:B3").Select
Selection.End(xlDown).Select
Selection.Copy
Selection.End(xlUp).Select
Range("B2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("B2:B500000"), Type:=xlFillSeries
Range("B2:B500000").Select
Range("H1").Select
Application.CutCopyMode = False

Range("J2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'открываем блокнот
Shell "NOTEPAD.EXE", vbNormalFocus
'вставка работает
Application.SendKeys "^v"
[/vba]
К сообщению приложен файл: _..xlsm (25.7 Kb)


Сообщение отредактировал Olesyas - Воскресенье, 10.12.2017, 15:55
 
Ответить
СообщениеДрузья, первый опыт написания простого макроса для рутинной работы, так что опыта и знаний в этой области почти нет. Зато есть макрос записанный макрорекодером, который внутри обрабатывает мои данные, потом копирует нужные ячейки, нашла код который открывает чистый блокнот и вставляет их, с этим все нормально. Но сохранять приходится в ручную, причем файлов будет много и каждый раз писать уникальное имя файла очень затруднительно. В идеале имя должно копироваться из ячейки или идти по порядку +1.
Буду очень очень благодарна!
Вот что есть:
[vba]
Код
Range("B2:B3").Select
Selection.End(xlDown).Select
Selection.Copy
Selection.End(xlUp).Select
Range("B2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("B2:B500000"), Type:=xlFillSeries
Range("B2:B500000").Select
Range("H1").Select
Application.CutCopyMode = False

Range("J2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'открываем блокнот
Shell "NOTEPAD.EXE", vbNormalFocus
'вставка работает
Application.SendKeys "^v"
[/vba]

Автор - Olesyas
Дата добавления - 10.12.2017 в 03:01
Hugo Дата: Воскресенье, 10.12.2017, 13:13 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3859
Репутация: 819 ±
Замечаний: 0% ±

365
1. Прочитать правила форума :)
2. Когда правила выполнены - можно начинать решать задачу.
До этого могу сказать только одно - никакой блокнот отрывать не надо, можно сохранить часть данных в текст несколькими другими, более правильными/простыми способами. Да хоть скопировать данные в новый лист и сохранить его как текст - не технично, зато всё можно записать рекордером, и имя изменить тоже будет видно где.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Воскресенье, 10.12.2017, 13:15
 
Ответить
Сообщение1. Прочитать правила форума :)
2. Когда правила выполнены - можно начинать решать задачу.
До этого могу сказать только одно - никакой блокнот отрывать не надо, можно сохранить часть данных в текст несколькими другими, более правильными/простыми способами. Да хоть скопировать данные в новый лист и сохранить его как текст - не технично, зато всё можно записать рекордером, и имя изменить тоже будет видно где.

Автор - Hugo
Дата добавления - 10.12.2017 в 13:13
Olesyas Дата: Воскресенье, 10.12.2017, 15:59 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Hugo, Правила прочитала) Думала, есть строчка которую все знают, что бы задать имя, поэтому файл не прикрепила.
Теперь добавила пример файла уменьшенный до 20 строк. Там же мои попытки записать последовательность с вариантом сохранения документа сразу в txt с табуляцией, только у меня пытается файл экселя то же стать блокнотом. И по-прежнему не ясно как задать имя для блокнота.
 
Ответить
СообщениеHugo, Правила прочитала) Думала, есть строчка которую все знают, что бы задать имя, поэтому файл не прикрепила.
Теперь добавила пример файла уменьшенный до 20 строк. Там же мои попытки записать последовательность с вариантом сохранения документа сразу в txt с табуляцией, только у меня пытается файл экселя то же стать блокнотом. И по-прежнему не ясно как задать имя для блокнота.

Автор - Olesyas
Дата добавления - 10.12.2017 в 15:59
alex77755 Дата: Воскресенье, 10.12.2017, 16:00 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

[vba]
Код
'    Range("B2:B3").Select ' Зачем? если в следующей строке выделяется другой диапазон
    Selection.End(xlDown).Select
    Selection.Copy
'    Selection.End(xlUp).Select ' Зачем? если в следующей строке выделяется другой диапазон
    Range("B2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("B2:B500000"), Type:=xlFillSeries
    Range("B2:B500000").Select
'    Range("H1").Select ' Зачем?
    Application.CutCopyMode = False
    
  ' не выделять ни копировать
'Range("J2").Select
'Range(Selection, Selection.End(xlDown)).Select
'Selection.Copy

m = Range("J2").Resize(Cells(Rows.Count, 10).End(xlUp).Row).Value
nam = m(1, 1) ' имя по первой ячейке
Open ActiveWorkbook.Path & "\" & nam & ".txt" For Output As 1
    For r = 1 To UBound(m)
        Print #1, m(r, 1)
    Next r
Close
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение[vba]
Код
'    Range("B2:B3").Select ' Зачем? если в следующей строке выделяется другой диапазон
    Selection.End(xlDown).Select
    Selection.Copy
'    Selection.End(xlUp).Select ' Зачем? если в следующей строке выделяется другой диапазон
    Range("B2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range("B2:B500000"), Type:=xlFillSeries
    Range("B2:B500000").Select
'    Range("H1").Select ' Зачем?
    Application.CutCopyMode = False
    
  ' не выделять ни копировать
'Range("J2").Select
'Range(Selection, Selection.End(xlDown)).Select
'Selection.Copy

m = Range("J2").Resize(Cells(Rows.Count, 10).End(xlUp).Row).Value
nam = m(1, 1) ' имя по первой ячейке
Open ActiveWorkbook.Path & "\" & nam & ".txt" For Output As 1
    For r = 1 To UBound(m)
        Print #1, m(r, 1)
    Next r
Close
[/vba]

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

Excel 2013
alex77755, спасибо за ответ. По поводу первых строк поясню идею. Нужно скопировать самую нижнюю ячейку в столбце B, затем эти данные вставить наверх, автозаполнить по порядку. В результате получаются ссылки, которые и нужно сохранить в txt. Далее повторить много раз. Добавила пример файла на 20 ячеек в начальное сообщение.
 
Ответить
Сообщениеalex77755, спасибо за ответ. По поводу первых строк поясню идею. Нужно скопировать самую нижнюю ячейку в столбце B, затем эти данные вставить наверх, автозаполнить по порядку. В результате получаются ссылки, которые и нужно сохранить в txt. Далее повторить много раз. Добавила пример файла на 20 ячеек в начальное сообщение.

Автор - Olesyas
Дата добавления - 10.12.2017 в 16:26
alex77755 Дата: Воскресенье, 10.12.2017, 17:14 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Цитата
в идеале имя должно копироваться из ячейки

Цитата
В результате получаются ссылки

это не совместимо!: В имени файлов не должно быть слеш
в ячейку "n1" поставил размер партии. формулы, естественно должны быть заполнены на размер партии
[vba]
Код
Sub Макрос1()
Dim n, k, s, pat
    k = [n1] ' размер партии
    n = Cells(Rows.Count, 2).End(xlUp) ' последнее значение во 2 колонке
    Range("B2") = n  ' записяваем значение
    Range("B2").AutoFill Destination:=Range("B2:B" & k + 1), Type:=xlFillSeries
    
    
    m = Range("H2").Resize(k).Value
    nam = Replace(Split(m(1, 1), "//")(1), "/", "_") ' имя по первой ячейке
    pat = ActiveWorkbook.Path & "\" & nam & ".txt"
    
    For r = 1 To UBound(m)
        s = IIf(Len(s) = 0, m(r, 1), s & vbCrLf & m(r, 1))
    Next r

Open pat For Output As 1
   Print #1, s
Close
End Sub
[/vba]

имя : www.имясайта.ru_раздел_number_0100000000054000003_etpName_fks.txt


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Воскресенье, 10.12.2017, 17:16
 
Ответить
Сообщение
Цитата
в идеале имя должно копироваться из ячейки

Цитата
В результате получаются ссылки

это не совместимо!: В имени файлов не должно быть слеш
в ячейку "n1" поставил размер партии. формулы, естественно должны быть заполнены на размер партии
[vba]
Код
Sub Макрос1()
Dim n, k, s, pat
    k = [n1] ' размер партии
    n = Cells(Rows.Count, 2).End(xlUp) ' последнее значение во 2 колонке
    Range("B2") = n  ' записяваем значение
    Range("B2").AutoFill Destination:=Range("B2:B" & k + 1), Type:=xlFillSeries
    
    
    m = Range("H2").Resize(k).Value
    nam = Replace(Split(m(1, 1), "//")(1), "/", "_") ' имя по первой ячейке
    pat = ActiveWorkbook.Path & "\" & nam & ".txt"
    
    For r = 1 To UBound(m)
        s = IIf(Len(s) = 0, m(r, 1), s & vbCrLf & m(r, 1))
    Next r

Open pat For Output As 1
   Print #1, s
Close
End Sub
[/vba]

имя : www.имясайта.ru_раздел_number_0100000000054000003_etpName_fks.txt

Автор - alex77755
Дата добавления - 10.12.2017 в 17:14
Olesyas Дата: Понедельник, 11.12.2017, 11:28 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
alex77755, Спасибо большое! Сижу разбираюсь с каждой строчкой, голова кругом. Пока не работает. Но я разберусь)
С именем проще - можно взять только нижнюю цифру из второго столбца в качестве имени. Там же нет слеша. Когда разберусь с тем, кто про что и под себя адаптирую, напишу!
 
Ответить
Сообщениеalex77755, Спасибо большое! Сижу разбираюсь с каждой строчкой, голова кругом. Пока не работает. Но я разберусь)
С именем проще - можно взять только нижнюю цифру из второго столбца в качестве имени. Там же нет слеша. Когда разберусь с тем, кто про что и под себя адаптирую, напишу!

Автор - Olesyas
Дата добавления - 11.12.2017 в 11:28
alex77755 Дата: Понедельник, 11.12.2017, 14:34 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Цитата
можно взять только нижнюю цифру из второго столбца в качестве имени

[vba]
Код
  nam = n
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение
Цитата
можно взять только нижнюю цифру из второго столбца в качестве имени

[vba]
Код
  nam = n
[/vba]

Автор - alex77755
Дата добавления - 11.12.2017 в 14:34
alex77755 Дата: Понедельник, 11.12.2017, 14:44 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Цитата
Пока не работает
К сообщению приложен файл: 5555.xlsm (24.0 Kb)


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение
Цитата
Пока не работает

Автор - alex77755
Дата добавления - 11.12.2017 в 14:44
Olesyas Дата: Понедельник, 11.12.2017, 18:13 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
alex77755, Ура! Я поняла и все работает! Вы мой спаситель!!! Благодарю!
 
Ответить
Сообщениеalex77755, Ура! Я поняла и все работает! Вы мой спаситель!!! Благодарю!

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

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