pablo Пользователь Сообщений: 10 |
Подскажите, пожалуйста, каким приемом можно редактировать большое количество файлов в exel? Например, нужно во всех файлах. xlsx, лежащих в одной папке проставить значение ячейки а1= 10 и закрасить в желтый цвет. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Перебрать циклом все файлы в папке и выполнить для каждого нужные операции. Вопрос перебора файлов обсуждался неоднократно. Один из вариантов можно найти в разделе «Приемы» |
pablo Пользователь Сообщений: 10 |
Я там так и не нашел нужного примера, только вот этот http://www.planetaexcel.ru/techniques/12/45/ но это немного не то, т.к. все действия происходят в уже открытом документе. А как это сделать чтобы файлы xlsx. открывались, с ними происходили действия в цикле и они закрывались? |
Z Пользователь Сообщений: 6111 Win 10, MSO 2013 SP1 |
#4 02.04.2013 14:40:38
Скорей всего — написать макрос, самому, или найти готовый, или заказать… «Ctrl+S» — достойное завершение ваших гениальных мыслей!.. |
||
pablo Пользователь Сообщений: 10 |
Z, т.е. шаблонов работы с несколькими файлами xls не существует? |
Z Пользователь Сообщений: 6111 Win 10, MSO 2013 SP1 |
Шаблонов — нет, макросы делали. В поиск — пакетная обработка файлов… «Ctrl+S» — достойное завершение ваших гениальных мыслей!.. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Вы чуть-чуть промазали со ссылкой: см. на одну выше )) Вот это Только вместо копирования листа — Ваши действия. Но сам процесс перебора файлов должен Вам подойти. |
EducatedFool Пользователь Сообщений: 3631 |
#8 02.04.2013 18:13:29 Вот есть пример обработки файлов в цикле: http://excelvba.ru/code/CombineFiles Надо совсем немного поменять: 1) вместо
написать
2) заменить
на
3) заменить
на
|
||||||||||||
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#9 02.04.2013 18:48:33 Практически готовое решение: Просмотреть все файлы в папке Остается только заменить вписываемое в ячейку значение и добавить именение заливки. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Пользователи Microsoft Office Word и Office Excel наверняка знакомы с такой замечательной функцией как “Поиск и замена”, позволяющей быстро исправлять допущенные или найденные в тексте ошибки. Впрочем, функциями поиска и замены обладают практически все, даже самые простые текстовые редакторы.
Тут важен не сам факт наличия данной функции, а ее универсальность. Хорошо известно, каким ограниченным является функционал инструментов поиска и замены в Блокноте. В то же время Word и Excel хоть и имеют достаточно широкий набор инструментов для поиска и замены в текстовом содержимом, не поддерживают пакетную обработку документов. Этой способностью обладает Notepad++, но опять же он не поддерживает работу с форматами Microsoft Office.
Как видите, не смотря на автоматизацию, при определенных обстоятельствах поиск и замена в тексте могут оказаться весьма трудоемкими. В таком случае вам на помощь придет замечательная утилита под названием Replace Genius. Отличительной чертой этого маленького, но очень полезного и мощного приложения является его универсальность.
Благодаря богатому набору специализированных функций Replace Genius позволяет обрабатывать текстовые документы как по одному, так и в пакетном режиме в полном соответствии с вашими индивидуальными потребностями. Replace Genius поддерживается простой поиск и замена, работа с регулярными выражениями, смещение строк, изменение регистра, предпросмотр результатов в режиме реального времени и множество других функций.
Программа имеет минималистский, но достаточно насыщенный интерфейс. На первый взгляд может показаться, что программа очень проста, однако это не так. Чтобы там не говорили, рассчитана она на опытных пользователей, хорошо знакомых с понятиями регулярных выражений.
К тому же в Replace Genius отсутствует русский язык. Одним словом, если вы не знакомы с английским языком, вам придется потратить немало времени чтобы разобраться во всех аспектах этого приложения. Приведем простейший пример пакетной замены текстовых данных. У нас есть папка с файлами в форматах doc, txt, rtf и xls.
Допустим, нам необходимо заменить слово “Windows” на “Linux”. Для этого в Replace Genius нам нужно создать пресет – шаблон, по которому утилита будет обрабатывать файлы.
Откройте программу, в левой панели переключитесь на вкладку Replace и введите в поля “Find” и “and replace with” нужные слова. Теперь давайте сохраним эту настройку в шаблон. Нажав клавишу F12, откройте менеджер пресетов, создайте в нем папку с любым удобным вам именем и нажмите “Add”. Также вы можете отредактировать уже имеющийся там шаблон Example. Затем жмем кнопку Batch и добавляем список файлов Microsoft Office.
В открывшемся опциональном окошке указываем нужный пресет, тип сохранения лучше оставить по умолчанию Save in this folder (только не забудьте указать папку, куда будут сохранены отредактированные копии) и жмем Ok. При этом откроется маленькое окошко, в котором будет обозначен список редактируемых документов.
Жмем Start и процесс пошел! Используя такие шаблоны можно за один раз редактировать множество файлов и, причем выполняя по несколько операций подряд над каждым из них. В нашем случае мы просто заменили “Windows” на “Linux”, но заодно можно выполнить еще массу других действий.
Пакетная обработка файлов. Макрос разместить в общем модуле любой книги.
Рядом с этой книгой расположить папку files2000, в которой разместить все файлы, предназначенные для обработки. Путь к папке и ее имя можно выбрать другие, изменив при этом строку кода
sPath = ThisWorkbook.Path & "files2000"
Диапазоны задаются в строках
.Range("B2:B" & lRw).Value = dValue
.Range("C2:D" & lRw).ClearContents
Значение для внесения в диапазон столбца В задано константой. Можно без нее — прописать значением в строке
.Range("B2:B" & lRw).Value = 0.3
Макрос
Sub DataChange()
Dim wBook As Workbook
Dim sPath As String
Dim sFName As String
Dim lRw As Long
Const dValue As Double = 0.3
With Application: .ScreenUpdating = False: .DisplayAlerts = False: End With
sPath = ThisWorkbook.Path & "files2000"
sFName = Dir(sPath & "*.xls*", vbDirectory)
Do While sFName <> ""
Set wBook = Workbooks.Open(Filename:=sPath & sFName)
With wBook
With .Worksheets(1)
lRw = .Cells(.Rows.Count, 1).End(xlUp).Row
If lRw > 1 Then
.Range("B2:B" & lRw).Value = dValue
.Range("C2:D" & lRw).ClearContents
wBook.Save
End If
End With
.Close
End With
sFName = Dir
Loop
With Application: .ScreenUpdating = True: .DisplayAlerts = True: End With
MsgBox "OK", 64, ""
End Sub
Определение последней строки
.Cells(.Rows.Count, 1).End(xlUp).Row - последняя видимая заполненная ячейка столбца А
В обрабатываемых файлах должны быть раскрыты все строки (сняты фильтры, если есть), иначе диапазон строк может определиться неверно.
Найти нижнюю границу по размеру пользовательского диапазона (принимаем, что в строке 1 находится «шапка» таблицы):
lRw = .UsedRange.Rows.Count
Недостаток этого варианта — в диапазон попадут все форматированные строки, в том числе и без данных (такое часто встречается при неумелом копировании: заполнено 10 строк, а диапазон — на миллион).
Диапазон заполненных строк относительно ячейки:
lRw = .Range("A1").CurrentRegion.Rows.Count
При этом должна быть уверенность, что диапазон данных неразрывен (данные не разделены пустыми строками и стобцами)
Пакетная обработка файлов |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Здравствуйте!
Хотел бы попросить помочь мне в написании макроса, самому это сделать ума не хватает.
Есть множество файлов эксель, которые должны пройти через фильтр (файл эксель) и потом экспортироваться в .PDF.
Подробнее о процессе:
1 – Открытие диалогового окна для выбора папки, из которой будут браться файлы для обработки (если можно сделать так, чтобы и сразу можно было бы выбрать папку для сохранения/экспорта — то было бы супер)
2 – Обработка. Собственно сама обработка выглядит следующим образом:
2.1 — очистка листа «report(csv)»
2.2 — импорт сюда же файла из выбранной папки
2.3 — обновление всех данных книги
3 – Экспорт. Экспортируется лист «Výstup». Было бы вообще замечательно, если бы названия экспортирующихся файлов содержали значение ячейки B4 из листа «Výstup» + пробел со словом «FactOrEasy», а в случае, когда эта ячейка пустая — сохранить под порядковым номером + Výstup
Буду вам очень благодарен!