Страницы: 1
RSS
пакетная обработка файлов Excel
 
Добрый день, может быть кто-то сталкивался по работе с такой ситуацией:  
необходимо обработать n-ое количество файлов Excel (например 47) в том ключе, чтобы файл вместо ссылок и формул файл содержал только итоговые значения (для последующей пересылки по электронной почте, как пример).  
 
Сейчас приходится использовать кондовый метод - открыл в каждом файле n-цать вкладок - Выделил все - скопировал и выбрал "Специальная вставка - Значения"... соответственно уходит прорва времени на такую обработку всего объема файлов...  
 
Возможно есть либо написанная программа, либо макрос, выполняющий эти действия в пакетном режиме...
 
Для активной книги:  
Sub DelFormula()  
For Each sh In ActiveWorkbook.Sheets  
 sh.UsedRange.Value = sh.UsedRange.Value  
Next  
End Sub  
Как перебрать и открыть кучу файлов - неоднократно обсуждалось.
 
Посмотрите ещё пример.  
В примере появляется окно выбора папки, указываете папку, нажимаете кнопку "Выбрать" и ..... во всех Excel файлах, на всех листах формулы будут заменены на значения.    
 
Таким образом применяйте данных макрос ОЧЕНЬ осторожно!!! Укажите не ту папки и ... прощайте все формулы  
 
P.S. В макрос встроены 2 предупреждения.
 
Огромное спасибо за советы.  
 
Pavel55  
А можно еще немного поэксплуатировать Ваши знания VisualBasic в части написания макросов?  
 
Все файлы идут с однотипной структурой вкладок. Можно ли добавить в макрос обработку, которая удаляет первую вкладку (вкладка называется "Расчет")?  
 
P.S. И вопрос чисто теоритический, возможно ли в принципе написать макрос, который будет кроме того что делае сейчас, удалять из вкладок сгруппированные столбцы (скрываю их, чтобы не мозолили глаза) и, предел мечтаний, удалять из определенной вкладки определенные строки?
 
Если вы называете "вкладкой" лист Excel, то да, можно удалять листы "Рачет" в каждом файле. См. пример.  
 
По поводу ваших дополнительных вопросов ответ - скорее всего можно. Особенно если структура файла одинаковая, т.е. например, нужно удалять столбцы от D до Z и строки от 10 до 50 - это очень легко.
 
Огромное спасибо за помощь.  
 
Остался только один вопрос - какие книги/форумы/в общем инфу искать, чтобы реализовать это "очень легко"?  
 
Пробовал добавить в Ваш файл нужные мне строки (открыл файл Excel - записал макрос - удалил на нужном листе необходимые строки - и пробовал вставить copy/past'ом из своего макроса в Ваш), но, естественно, вылетает ошибка. Просто т.к. необходимых знаний нет - мне нужно понять как и, главное, в какое место нужно вставить дополнительные строки кода в тот макрос, который Вы выслали.
 
трудно советовать академику..  
 
но перво-наперво - ф1  
 
второ-наперво - "записать макрос"  
 
и в-третьих - что-нибудь из Уокенбаха или Киммела
 
Сайты/Форумы - можножно этот изучить (PlanetaExcel.ru), тут много приёмов и информации есть, также можете изучить информацию тут http://www.msoffice.nm.ru/faq/macros.htm
 
P.S. но можете и нас спросить) мы тоже поможем)
 
Был бы Вам весьма признателен.  
 
В приложении расчетный файл которым пользуюсь. Практически все, естественно, прописано на формулах, поэтому если таких файлов 60 и каждый нужно подготовить для отправки по эл. почте клиенту - можно убиться использовать copy&past (вставка - значение) руками...  
 
В идеале, по окончанию обработки, нужно получить на выходе файл без листа "Расчет" и с немного подкорректированным листом "Структура" (те строки которые нужно удалить - отметил фиолетовой заливкой).  
 
Если подскажите как реализовать - буду премного благодарен.  
 
P.S. Если вдруг, случайно, заметите несуразности в формулах (например как тянутся шапки из листа "Структура" в лист "ГЛП", с удовольствием бы воспользовался советами как реализовать это грамотнее... так как все что сделал в этом файле брал, в основном, из советов с этого форума).  
 
P.P.S Чтобы окончательно наступило счастье хочу реализовать возможность, чтобы итоговая сумма автоматически прописывалась прописью (пардон за тавтологию), но пока не дошли руки, но со временем сделаю (я надеюсь).
 
Посмотрите пример
 
Pavel55  
 
Огромное Вам спасибо, очень выручили :-)
 
А зачем морочиться с макросами?    
Почему бы просто не разорвать связи?  
Открыл книгу со ссылками - Правка - Связи - Разорвать связь.  
При этом эксель добросовестно предупредит, что "При разрыве связей формулы и внешние ссылки будут преобразованы в принимаемые ими на данный момент значения. Так как эту операцию невозможно отменить, рекомендуется сохранить версию этого файла под другим именем. Разорвать связи?"  
Смело жмите "Разорвать связи" и получите значения. Учтите, что, если книга связана с несколькими другими книгами, то каждую связь надо рвать отдельно, но это недолго и несложно.  
Успехов!
 
Извините, не учёл основного условия задачи - работа с большим количеством файлов.
 
Pavel55  
 
Подскажите пожалуйста, решил сам немного доработать макрос, который Вы присылали.  
 
Суть - удалить столбцы на следующих листах:  
Лист "ГЛП" - все столбцы, начиная с "I"  
Лист "ГП" - все столбцы, начиная с "F"  
 
Проверьте пожалуйста, правильно ли я понимаю что надо вставить такие строки кода в макрос:  
 
If iSheet.Name = "ГЛП" Then  
                                   .Cells(Colums.Count, 1).End(xlUp).Column > "I" Then  
                                           .Colums("I" & ":" & .Columns(Rows.Count, 1).End(xlUp).Column).Delete Shift:=xlUp  
                               End If
 
Посмотрите файл
 
Спасибо Павел, правда получилось не совсем то, что задумывалось.  
 
Объясню зачем хотел эти столбцы удалить:  
на листе "ГЛП" столбец "I" "Группирован" и внутри были служебные значения, которые используются в расчетном файле и я их "группирую" чтобы не мозолили глаза... то же самое и на листе "ГП" (там столбец "F"), теперь, после использования последней версии макроса, значения внутри этих столбцов действительно пропадают... но группировка не исчезает... приходится "разгруппировывать" каждый файл вручную...    
 
Еще раз хотел Вас поблагодарить, за помощь и терпение в реализации моих "запросов", большое спасибо.
 
А вот так? )
 
неа...  
 
Microsoft Visual Basic  
 
Run-time error '438':  
 
Object doesent support this property or method
 
А вот так? )
 
ага :-)  
 
преогромнейшее спасибо
 
Большое спасибо за инфу
Страницы: 1
Читают тему
Наверх