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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование листа в другую(ие) книгу(и) по условию - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Копирование листа в другую(ие) книгу(и) по условию
Sharf1 Дата: Пятница, 30.10.2015, 12:39 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте. Есть программа по заполнению и распечатыванию товарной накладной. Подскажите как сохранить готовую накладную в книгу имеющую название соответствующее имени того кому она выдана и на лист имеющий название даты выдачи и номера ТН, желательно чтобы программа сама создавала книгу если ТН человеку выдаётся впервые и добавляла лист если книга на человека уже заведена.
[moder]Приложите файл-пример[/moder]


Сообщение отредактировал Manyasha - Пятница, 30.10.2015, 12:43
 
Ответить
СообщениеЗдравствуйте. Есть программа по заполнению и распечатыванию товарной накладной. Подскажите как сохранить готовую накладную в книгу имеющую название соответствующее имени того кому она выдана и на лист имеющий название даты выдачи и номера ТН, желательно чтобы программа сама создавала книгу если ТН человеку выдаётся впервые и добавляла лист если книга на человека уже заведена.
[moder]Приложите файл-пример[/moder]

Автор - Sharf1
Дата добавления - 30.10.2015 в 12:39
Sharf1 Дата: Пятница, 30.10.2015, 13:12 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Прикладываю файл. Смысл в том чтобы лист "накладная" копировался так же как вывелся на печать т.е. с учётом того, что некоторые ячейки скрыты фильтром. И ещё. Необходимо чтобы книга с именем получателя ТМЦ сохранялась в папку где лежит файл по оформлению ТМЦ.
К сообщению приложен файл: 5153420.xls (47.5 Kb)
 
Ответить
СообщениеПрикладываю файл. Смысл в том чтобы лист "накладная" копировался так же как вывелся на печать т.е. с учётом того, что некоторые ячейки скрыты фильтром. И ещё. Необходимо чтобы книга с именем получателя ТМЦ сохранялась в папку где лежит файл по оформлению ТМЦ.

Автор - Sharf1
Дата добавления - 30.10.2015 в 13:12
Roman777 Дата: Воскресенье, 01.11.2015, 15:06 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Sharf1, Код сохраняет в xlsx формате. И предусматривает, что файлики отдельные будут падать в ту же путевую папку, что и ваша изначальная книга, откуда вы этот лист сохраняете.
[vba]
Код
Sub SaveNakl()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim sht As Worksheet
Dim i As Long, i_n As Long
Dim path1 As String
Dim sht_index As Long
Set WB1 = ThisWorkbook
i_n = WB1.Worksheets("Накладная").Cells(Rows.Count, 2).End(xlUp).Row
path1 = WB1.Path
If Dir(path1 & "\" & WB1.Worksheets("Накладная").Range("U9") & ".xls") = "" Then
   Workbooks.Add
   Set WB2 = ActiveWorkbook
   WB1.Activate
   WB1.Worksheets("Накладная").Copy Before:=WB2.Worksheets(1)
   WB2.Worksheets(1).Name = Format(Now, "dd.mm.yyyy")
   WB2.SaveAs Filename:=path1 & "\" & WB1.Worksheets("Накладная").Range("U9") & ".xlsx"
Else
   Workbooks.Open (path1 & "\" & WB1.Worksheets("Накладная").Range("U9") & ".xlsx")
   Set WB2 = ActiveWorkbook
   For Each sht In WB2.Worksheets
      If sht.Name = Format(Now, "dd.mm.yyyy") Then
         sht_index = sht.Index
         Exit For
      End If
   Next sht
      If sht_index <> 0 Then
         WB1.Activate
         WB1.Worksheets("Накладная").Copy Before:=WB2.Worksheets(sht_index)
         WB2.Worksheets(sht_index + 1).Name = WB2.Worksheets(sht_index + 1).Name & "_"
         WB2.Worksheets(sht_index).Name = Format(Now, "dd.mm.yyyy")
         Application.DisplayAlerts = False
         WB2.Worksheets(sht_index + 1).Delete
         Application.DisplayAlerts = True
      Else
         WB1.Activate
         WB1.Worksheets("Накладная").Copy Before:=WB2.Worksheets(1)
         WB2.Worksheets(1).Name = Format(Now, "dd.mm.yyyy")
      End If
   WB2.Close True
End If
End Sub
[/vba]


Много чего не знаю!!!!
 
Ответить
СообщениеSharf1, Код сохраняет в xlsx формате. И предусматривает, что файлики отдельные будут падать в ту же путевую папку, что и ваша изначальная книга, откуда вы этот лист сохраняете.
[vba]
Код
Sub SaveNakl()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim sht As Worksheet
Dim i As Long, i_n As Long
Dim path1 As String
Dim sht_index As Long
Set WB1 = ThisWorkbook
i_n = WB1.Worksheets("Накладная").Cells(Rows.Count, 2).End(xlUp).Row
path1 = WB1.Path
If Dir(path1 & "\" & WB1.Worksheets("Накладная").Range("U9") & ".xls") = "" Then
   Workbooks.Add
   Set WB2 = ActiveWorkbook
   WB1.Activate
   WB1.Worksheets("Накладная").Copy Before:=WB2.Worksheets(1)
   WB2.Worksheets(1).Name = Format(Now, "dd.mm.yyyy")
   WB2.SaveAs Filename:=path1 & "\" & WB1.Worksheets("Накладная").Range("U9") & ".xlsx"
Else
   Workbooks.Open (path1 & "\" & WB1.Worksheets("Накладная").Range("U9") & ".xlsx")
   Set WB2 = ActiveWorkbook
   For Each sht In WB2.Worksheets
      If sht.Name = Format(Now, "dd.mm.yyyy") Then
         sht_index = sht.Index
         Exit For
      End If
   Next sht
      If sht_index <> 0 Then
         WB1.Activate
         WB1.Worksheets("Накладная").Copy Before:=WB2.Worksheets(sht_index)
         WB2.Worksheets(sht_index + 1).Name = WB2.Worksheets(sht_index + 1).Name & "_"
         WB2.Worksheets(sht_index).Name = Format(Now, "dd.mm.yyyy")
         Application.DisplayAlerts = False
         WB2.Worksheets(sht_index + 1).Delete
         Application.DisplayAlerts = True
      Else
         WB1.Activate
         WB1.Worksheets("Накладная").Copy Before:=WB2.Worksheets(1)
         WB2.Worksheets(1).Name = Format(Now, "dd.mm.yyyy")
      End If
   WB2.Close True
End If
End Sub
[/vba]

Автор - Roman777
Дата добавления - 01.11.2015 в 15:06
Sharf1 Дата: Понедельник, 02.11.2015, 16:56 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Уважаемый, Roman777. Ваш скрипт работает один раз, т.е. он создаёт книгу с копией накладной, но при этом когда вводится накладная на другую дату на существующее уже имя, то программа просит заменить существующий файл. И ещё вопрос. Возможно скопировать только лист "накладная" с вставленными формулами или можно получить копию не зависящую от формул исходника т.е. именно текст и числа которые подставляются формулами?
 
Ответить
СообщениеУважаемый, Roman777. Ваш скрипт работает один раз, т.е. он создаёт книгу с копией накладной, но при этом когда вводится накладная на другую дату на существующее уже имя, то программа просит заменить существующий файл. И ещё вопрос. Возможно скопировать только лист "накладная" с вставленными формулами или можно получить копию не зависящую от формул исходника т.е. именно текст и числа которые подставляются формулами?

Автор - Sharf1
Дата добавления - 02.11.2015 в 16:56
Roman777 Дата: Понедельник, 02.11.2015, 18:00 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Sharf1, по поводу первого:


Извиняюсь, проверку на поиск книги не с тем расширением поставил.
А по поводу второго (сохранять только значения), щас прям быстро доправить не смогу, над отдельно диапазоны (объединённые) ячейки будет выделять и копировать-сохранять как значения, иного способа я не знаю...


Много чего не знаю!!!!
 
Ответить
СообщениеSharf1, по поводу первого:


Извиняюсь, проверку на поиск книги не с тем расширением поставил.
А по поводу второго (сохранять только значения), щас прям быстро доправить не смогу, над отдельно диапазоны (объединённые) ячейки будет выделять и копировать-сохранять как значения, иного способа я не знаю...

Автор - Roman777
Дата добавления - 02.11.2015 в 18:00
Manyasha Дата: Понедельник, 02.11.2015, 18:08 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
сохранять только значения

вот так можно:[vba]
Код
With activesheet
  .usedrange = .usedrange.value
End With
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
сохранять только значения

вот так можно:[vba]
Код
With activesheet
  .usedrange = .usedrange.value
End With
[/vba]

Автор - Manyasha
Дата добавления - 02.11.2015 в 18:08
Roman777 Дата: Вторник, 03.11.2015, 10:07 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, Добрый день! Спасибо за подсказку. Не знал о таком свойстве).
С помощью подсказки вышло как-то так:

Вышло громоздко, знаю, что можно упростить, но тут вроде не грех и так оставить...)


Много чего не знаю!!!!
 
Ответить
СообщениеManyasha, Добрый день! Спасибо за подсказку. Не знал о таком свойстве).
С помощью подсказки вышло как-то так:

Вышло громоздко, знаю, что можно упростить, но тут вроде не грех и так оставить...)

Автор - Roman777
Дата добавления - 03.11.2015 в 10:07
Sharf1 Дата: Вторник, 03.11.2015, 13:03 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Roman777, Спасибо Вам большое. Но возникает проблема следующего характера. Если человек получил накланую один раз в день, то всё замечательно, а вот если более одного раза, то оформленная до этого накладная замещается последней с потерей данных. Возможно ли сделать сохранение без потери предыдущей накладной?
 
Ответить
СообщениеRoman777, Спасибо Вам большое. Но возникает проблема следующего характера. Если человек получил накланую один раз в день, то всё замечательно, а вот если более одного раза, то оформленная до этого накладная замещается последней с потерей данных. Возможно ли сделать сохранение без потери предыдущей накладной?

Автор - Sharf1
Дата добавления - 03.11.2015 в 13:03
Roman777 Дата: Вторник, 03.11.2015, 15:38 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Sharf1, просто вместо удаления листа, при нахождении, нужно добавлять к его наименованию символы, чтобы имя не дублировалось. В приложенном макросе, имена листов будут, начиная с повторной в этот день накладной заканчиваться на "_1", "_2"... и тд.


Много чего не знаю!!!!
 
Ответить
СообщениеSharf1, просто вместо удаления листа, при нахождении, нужно добавлять к его наименованию символы, чтобы имя не дублировалось. В приложенном макросе, имена листов будут, начиная с повторной в этот день накладной заканчиваться на "_1", "_2"... и тд.

Автор - Roman777
Дата добавления - 03.11.2015 в 15:38
Sharf1 Дата: Вторник, 03.11.2015, 16:11 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Roman777, огромное Вам спасибо. Так же спасибо Manyasha за участие. Жалко не даёт больше одного раза повысить репутацию. Не поленился бы, раз 50 повысил)))))
 
Ответить
СообщениеRoman777, огромное Вам спасибо. Так же спасибо Manyasha за участие. Жалко не даёт больше одного раза повысить репутацию. Не поленился бы, раз 50 повысил)))))

Автор - Sharf1
Дата добавления - 03.11.2015 в 16:11
  • Страница 1 из 1
  • 1
Поиск:

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