Страницы: 1
RSS
vba: копирование листа в новую книгу
 
Добрый день!  
Знаю, как скопировать лист в новую книгу с переносом всех значений и защитить ячейки от изменений (спасибо планете!):  
 
   Dim wsSh As Worksheet  
   Dim NewWb As Workbook, asArr(), li As Long  
   DateString = Format(Now, "dd-mm-yy hh-mm-ss")  
   Application.ScreenUpdating = False  
   For Each wsSh In Sheets(Array("Заявление"))  
       If wsSh.Visible <> -1 Then ReDim Preserve asArr(li): asArr(li) = wsSh.Name: li = li + 1: wsSh.Visible = xlSheetVisible  
   Next wsSh  
   Sheets(Array("Заявление")).Copy      
   Set NewWb = ActiveWorkbook  
   For Each wsSh In NewWb.Worksheets  
       With wsSh  
           .Visible = True      
           .UsedRange.Value = .UsedRange.Value              
           .Cells.Locked = True  
           .Cells.FormulaHidden = True  
           .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True  
           .EnableSelection = xlNoSelection  
       End With  
   Next  
   NewWb.SaveAs Filename:=ActiveWorkbook.Path & DateString & "_Заявление.xls"  
   Application.ScreenUpdating = True  
   ThisWorkbook.Close SaveChanges:=False  
 
 
А мне надо, чтобы при копировании листа диапазон [A1:Z266] переносился в виде значений (а не формул) с защитой от изменений, а все остальное, где хоть что-то есть, с сохранением формул и без защиты. Подскажите, пожалуйста, как это сделать?
 
Если вам нужно так сделать на каждом листе в новой книге то измените эту часть:  
 
With wsSh  
.Visible = True    
.[A1:Z266].Value = .[A1:Z266].Value
.Cells.Locked = False  
.[A1:Z266].Locked = True
.[A1:Z266].FormulaHidden = True
.Protect Password.....
Редко но метко ...
 
Спасибо, все получилось! Скажите, а возможно ли при переносе защитить от изменений формы управления - флажки?
 
Если состояние флажков нельзя менять - для чего они тогда вообще? При копировании листа их состояние не меняется.
 
{quote}{login=Юрий М}{date=26.09.2011 08:59}{thema=}{post}Если состояние флажков нельзя менять - для чего они тогда вообще? При копировании листа их состояние не меняется.{/post}{/quote}  
 
Это я заметила. Суть в том, чтобы пользователь, поработав с формами (которые содержат расчетную часть и проверки корректности) на выходе получил документы, состояние которых уже нельзя поменять. Я понимаю, что можно на выходе делать документы, содержащие только выбранные значения. Но на данный момент задача заключается в том, чтобы получить документ, доступный для изменений с тем же успехом, как картинка jpg.
 
>>Но на данный момент задача заключается в том, чтобы получить документ, доступный для изменений с тем же успехом, как картинка jpg  
 
установите виртуальный принтер и печатайте в pdf  
doPDF
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=27.09.2011 01:21}{thema=}{post}>>Но на данный момент задача заключается в том, чтобы получить документ, доступный для изменений с тем же успехом, как картинка jpg  
 
установите виртуальный принтер и печатайте в pdf  
doPDF{/post}{/quote}  
 
Да, думала о таком решении и надеюсь реализовать :)
 
{quote}{login=Black__Hole}{date=26.09.2011 02:20}{thema=vba: копирование листа в новую книгу}{post}Добрый день!  
Знаю, как скопировать лист в новую книгу с переносом всех значений и защитить ячейки от изменений (спасибо планете!):  
 
   Dim wsSh As Worksheet  
   Dim NewWb As Workbook, asArr(), li As Long  
   DateString = Format(Now, "dd-mm-yy hh-mm-ss")  
   Application.ScreenUpdating = False  
   For Each wsSh In Sheets(Array("Заявление"))  
       If wsSh.Visible <> -1 Then ReDim Preserve asArr(li): asArr(li) = wsSh.Name: li = li + 1: wsSh.Visible = xlSheetVisible  
   Next wsSh  
   Sheets(Array("Заявление")).Copy      
   Set NewWb = ActiveWorkbook  
   For Each wsSh In NewWb.Worksheets  
       With wsSh  
           .Visible = True      
           .UsedRange.Value = .UsedRange.Value              
           .Cells.Locked = True  
           .Cells.FormulaHidden = True  
           .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True  
           .EnableSelection = xlNoSelection  
       End With  
   Next  
   NewWb.SaveAs Filename:=ActiveWorkbook.Path & DateString & "_Заявление.xls"  
   Application.ScreenUpdating = True  
   ThisWorkbook.Close SaveChanges:=False  
 
 
А мне надо, чтобы при копировании листа диапазон [A1:Z266] переносился в виде значений (а не формул) с защитой от изменений, а все остальное, где хоть что-то есть, с сохранением формул и без защиты. Подскажите, пожалуйста, как это сделать?{/post}{/quote}
 
Скажите, пожалуйста, а как сделать так, чтобы копировались два листа на новую книгу? То есть два листа с одной книги (как в примере "Заявление", и ещё допустим второй "Образец") в один новый файл?
 
Дорогие мужчины, ответье пожалуйса! Очень нужно :'(
 
Для копирования 2-х листов  
Вместо: Sheets(Array("Заявление")).Copy  
Должно быть: Sheets(Array("Заявление", "Образец")).Copy
 
{quote}{login=ZVI}{date=16.01.2012 09:12}{thema=}{post}Для копирования 2-х листов  
Вместо: Sheets(Array("Заявление")).Copy  
Должно быть: Sheets(Array("Заявление", "Образец")).Copy{/post}{/quote}  
 
Спасибо большое ZVI! Вы молодец! :)  
А что надо написать в этом макросе чтобы он спрашивал меня куда сохранять этот файл?  
И чтобы к имени ещё прибавлял значение из ячейки, которая не меняется?  
 
Скажите, пожалуйста :(
 
Малышка Стьюи, надо перечислить n-ую сумму на следующие реквизиты... ]:->
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=16.01.2012 01:21}{thema=}{post}Малышка Стьюи, надо перечислить n-ую сумму на следующие реквизиты... ]:->{/post}{/quote}  
 
Ну помогите пожалуйста, если знаете :( На данный момент я не располагаю достаточными финансами :((((((((
 
вот вернется ZVI - он главный знаток и филантроп :)
Живи и дай жить..
 
>Ну помогите пожалуйста, если знаете :( На данный момент я не располагаю достаточными финансами :((((((((  
На интернет, я смотрю, деньги нашли ^_^  
 
Правильно слэн говорит, ждите ZVI : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
ууу, злые жители Планеты, всё бы вам на бедных девушках наживаться )))  
я вон с октября сижу без работы и ничего ... ещё не помер с голоду ))    
 
Sub test()  
   Dim wsSh As Worksheet, NewWb As Workbook, asArr(), li As Long, DateString As String  
   Dim MyPassword As String, iPath As String  
 
   DateString = Format(Now, "dd-mm-yy hh-mm-ss")  
   Application.ScreenUpdating = False  
   For Each wsSh In Worksheets  
       If wsSh.Visible <> -1 Then ReDim Preserve asArr(li): asArr(li) = wsSh.Name: li = li + 1: wsSh.Visible = xlSheetVisible  
   Next wsSh  
   Sheets(Array("Заявление", "Образец")).Copy  
   Set NewWb = ActiveWorkbook  
   MyPassword = "1"    'ПАРОЛЬ ЛИСТА  
   For Each wsSh In NewWb.Worksheets  
       With wsSh  
           .Visible = True  
           .UsedRange.Value = .UsedRange.Value  
           .Cells.Locked = True  
           .Cells.FormulaHidden = True  
           .Protect Password:=MyPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True  
           .EnableSelection = xlNoSelection  
       End With  
   Next  
 
   With Application.FileDialog(msoFileDialogFolderPicker)  
       .Title = "Укажите папку"  
       .Show  
       If .SelectedItems.Count = 0 Then Exit Sub  
       iPath = .SelectedItems(1) & Application.PathSeparator  
   End With  
 
   NewWb.SaveAs Filename:=iPath & DateString & "_Заявление.xls"  
   NewWb.Close  
   Application.ScreenUpdating = True  
   'ThisWorkbook.Close SaveChanges:=False  
   MsgBox "Листы 'Заявление' и 'Образец' сохранены в папку: " & iPath, vbInformation, "Конец"  
End Sub
 
Во дела! Павел, спасибо, что подстраховали, а то пока некогда, а до вечера далеко ещё.  
 
Слэн, привет. Для нас с Павлом (филантропов) интересные девушки не потом! :-)
 
>я вон с октября сижу без работы и ничего ... ещё не помер с голоду ))    
А семья? Как, нормально себя чувствует?) А если серьезно: слишком много халявы на Планете (мое мнение). Даже для тех, кто не прикладывает никаких усилий для решения задачи (клянчить не в счет).  
 
>а до вечера далеко ещё  
Кому далеко, а кому час-другой)  
 
школьные оценки  
20212
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=Степлер}  
я вон с октября сижу без работы и ничего ... ещё не помер с голоду ))    
{/post}{/quote}  
 
Степлер, здравствуйте!  
Напишите, пожалуйста 0191077@gmail.com
 
Спасибо. Писать не буду )  
 
P.S. Если хотите отблагодарить, скажите мне просто спасибо (данный код не стоит больше :) ), если хотите что-то спросить по Excel спрашивайте тут, мы поможем )
 
{quote}{login=Степлер}{date=16.01.2012 06:00}{thema=}{post}Спасибо. Писать не буду )  
 
P.S. Если хотите отблагодарить, скажите мне просто спасибо (данный код не стоит больше :) ), если хотите что-то спросить по Excel спрашивайте тут, мы поможем ){/post}{/quote}  
 
Степлер, Вы неверно меня поняли. Вы мне ничего еще не сделали, чтобы я Вас благодарил ;) Я Вам скажу спасибо, если свяжитесь со мной.  
У меня есть задача слишком сложная для меня.
 
поэтому я и написал "если хотите что-то спросить по Excel спрашивайте тут, мы поможем )"  
 
Создайте тему с вашим вопросом и файлом-примреом, а мы посмотрим, чем вам можем помочь.  
 
P.S. Я не пишу никому на почту
 
У Степлера просто нет почтового ящика - как он может написать?
 
{quote}{login=Степлер}{date=16.01.2012 06:21}{thema=}{post}поэтому я и написал "если хотите что-то спросить по Excel спрашивайте тут, мы поможем )"  
 
Создайте тему с вашим вопросом и файлом-примреом, а мы посмотрим, чем вам можем помочь.  
 
P.S. Я не пишу никому на почту{/post}{/quote}  
 
Степлер, у меня есть задача, которую нужно сделать. Мне не нужна помощь, мне нужно сделать полностью от и до. Форум мне не подъодит, так как нужно, чтобы кто-то отвечал за результат и сроки. Вам это интересно? По почте вышлю подробное описание.
 
Спасибо, мне это не интересно
 
>данный код не стоит больше  
Степлер, Павел, если не ошибаюсь : ) Не сочтите за труд, сходите по этой (см. ниже) ссылке и прочитайте то, что в блоке с пометкой "цитата".  
<EM>http://forum.htmlbook.ru/index.php?showtopic=31842&view=findpost&p=240273</EM>
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Да, Саш, меня зовут Павел. Мой прошлый ник Pavel55. Я последнее время меняю свои ники каждую неделю.  
Сходил, почитал, понравилось )) В чём-то он прав.    
Просто, действительно, напишу макрос 15 строк и мне скажут "сколько заплатить тебе" и что и как мне считать сумму, если я действительно потратил 3 минуты. Не скажу же я "С вас 5000 руб." Такую сумму никто не заплатит, это любой набросок Пикассо можно продать за огромные деньги - он уникален, а людей пишущих макросы - тысячи.  
Я беру деньги за свои макросы, в случае, когда пишу на заказ, когда это большой макрос, над которым я часами сидел писал, долго тестировал, сверялся с заказчиком и т.д. А так VBA для меня это хобби, чтобы не забыть его совсем и размять мозги.  
 
Павел
Страницы: 1
Читают тему
Наверх