Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2012, 14:24   #1
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию Однотипное форматирование нескольких документов

Написал макрос изменения форматирования документа.
Но он действует только на открытую книгу.
Подскажите, как сделать, чтобы можно было применить данный макрос к нескольким файлам? Устроит любой вариант (применение к файлам в определённой папке, или же выбор файлов...)
tibhar940 вне форума Ответить с цитированием
Старый 06.09.2012, 14:30   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
Сообщение от tibhar940 Посмотреть сообщение
Написал макрос изменения форматирования документа...
Но вам его не покажу!:-)
Цитата:
Сообщение от tibhar940 Посмотреть сообщение
Но он действует только на открытую книгу.
Дык, оне все практически. Не ну кроме kill там, oldname as newname и т.д.
Цитата:
Сообщение от tibhar940 Посмотреть сообщение
Подскажите, как сделать, чтобы можно было применить данный макрос к нескольким файлам? Устроит любой вариант...
Копируйте его в несколько файлов и применяйте.
?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 06.09.2012 в 14:34.
kuklp вне форума Ответить с цитированием
Старый 06.09.2012, 14:45   #3
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Но вам его не покажу!:-)

Дык, оне все практически. Не ну кроме kill там, oldname as newname и т.д.
Копируйте его в несколько файлов и применяйте.
?
Sub Форматирование()

'1)изменение колонтитула на КОЛОНТИТУЛ
With ActiveSheet.PageSetup
.RightHeader = " &""Arial,полужирный"" КОЛОНТИТУЛ"
End With

'2)переименование листа
ActiveSheet.Name = "ЛИСТ"

'3)подстановка нужной шапки с переменными
Range("A1") = "Слова A с B "

'4)удаление лишних данных в ячейке
Range("A3") = " "

'5)замена за период на в течение периода
Range("A2").Select
ActiveCell.Replace What:="за период", Replacement:="в течение периода", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False

'6)удаление ненужных столбцов и снятие выделения со столбца
Columns("D:D").Delete
Columns("O:O").Delete
Columns("Q:Q").Select
Selection.Interior.ColorIndex = xlNone

'7)Выбор человека через инпутбокс
Dim uch As Variant
uch = InputBox("выберите человека", "ЧЕЛОВЕК", "")

If uch <> "" Then
Range("A1").Select
ActiveCell.Replace What:="A", Replacement:=uch, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
End If

'8)Выбор штуки через инпутбокс
Dim ins As Variant
ins = InputBox("Выберите штуку", "ШТУКА", "")

If ins <> "" Then
Range("A1").Select
ActiveCell.Replace What:="B", Replacement:=ins, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
End If

End Sub


Ну вот макрос. Мне сотню файлов как-то не шибко удобно открывать и в каждой применять макрос. Поэтому захотел посоветоваться. в идеале хочу чтобы можно было кинуть файлики в папочку, запустить макрос, и он их преобразует в нужное форматирование.
tibhar940 вне форума Ответить с цитированием
Старый 06.09.2012, 14:59   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Почитайте справку по GetOpenFilename Method
Там и пример есть. И в поиске много интересного мона найти.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 06.09.2012, 15:02   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

используйте объекты из "Scripting.FileSystemObject" для перебора файлов в каталоге и по-очереди их открывайте, а потом форматируйте.
http://programmersforum.ru/showthread.php?t=30219
В этой теме немало примеров, как сделать подобное.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 07.09.2012, 13:50   #6
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
используйте объекты из "Scripting.FileSystemObject" для перебора файлов в каталоге и по-очереди их открывайте, а потом форматируйте.
http://programmersforum.ru/showthread.php?t=30219
В этой теме немало примеров, как сделать подобное.
Спасибо. Направьте меня в нужное русло пожалуйста)
Вот моя программа действия. Я выбираю папку, открываю файлы, применяю нужное форматирование. Так?

Пока что у меня получилось примерно так:

Sub PaketnayaObrabotka()

On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemO bject")
Set folder = Fso.GetFolder("C:\Documents and Settings\1")
MsgBox folder.Name
For Each file In folder.Files
Range("A1") = "Ячейка"
Next

End Sub

Но при запуске макроса не изменяет файлы. А если их открыть и запустить макрос, то изменяет лишь один из файлов. Видимо активный.

Направьте начинающего в нужное русло)
Спасибо.
tibhar940 вне форума Ответить с цитированием
Старый 10.09.2012, 10:45   #7
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от tibhar940 Посмотреть сообщение
Спасибо. Направьте меня в нужное русло пожалуйста)
Вот моя программа действия. Я выбираю папку, открываю файлы, применяю нужное форматирование. Так?

Пока что у меня получилось примерно так:

Sub PaketnayaObrabotka()

On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemO bject")
Set folder = Fso.GetFolder("C:\Documents and Settings\1")
MsgBox folder.Name
For Each file In folder.Files
Range("A1") = "Ячейка"
Next

End Sub

Но при запуске макроса не изменяет файлы. А если их открыть и запустить макрос, то изменяет лишь один из файлов. Видимо активный.

Направьте начинающего в нужное русло)
Спасибо.
Господа, подскажите всё-таки. ЧЯДНТ?) Вроде бы должно ведь работать.
tibhar940 вне форума Ответить с цитированием
Старый 10.09.2012, 10:58   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub PaketnayaObrabotka()

'On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemObject")
Set folder = Fso.GetFolder("C:\Documents and Settings\1")
MsgBox folder.Name
For Each file In folder.Files
With Workbooks.Open(file.Path).Worksheets(1).[a1]
.Value = "Ячейка"
.Parent.Parent.Close -1
End With
Next

End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 10.09.2012, 11:55   #9
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Код:
Sub PaketnayaObrabotka()

'On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemObject")
Set folder = Fso.GetFolder("C:\Documents and Settings\1")
MsgBox folder.Name
For Each file In folder.Files
With Workbooks.Open(file.Path).Worksheets(1).[a1]
.Value = "Ячейка"
.Parent.Parent.Close -1
End With
Next

End Sub
Спасибо большое! Пытался сначала сам вставить With, но у меня ругалось всё время. Такой вариант я даже не пробовал.

Еще 2 вопроса:
Как называются эти команды после точки (обобщающее значение)? где можно почитать?
Как вставлять в тело сообщения на форуме код с подсветкой?

И еще маленький вопросик:
With Workbooks.Open(file.Path).Worksheet s(1).[a1]
.Value = "Ячейка"
.Parent.Parent.Close -1
End With

Допустим я хочу изменить еще ряд параметров страницы и не обязательно с ячейкой А1, но если я выделю это в отдеьный виф, то это будет замедлять макрос, поскольку снова откроет файлы, скорректирует их и закроет. Как можно этого избежать? Может в теле Виф можно какой-нибудь оператор использовать со смыслом "и" ?
Заранее извиняюсь за мою неполную компетентность в терминологии)
___________________________________ _________________________
Sub PaketnayaObrabotka()

'On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemO bject")
Set folder = Fso.GetFolder("C:\Documents and Settings\1")
MsgBox folder.Name
For Each File In folder.Files

With Workbooks.Open(File.Path).Worksheet s(1).[a1]
.Value = "Слова слова слова"
.Parent.Parent.Close -1
End With

With Workbooks.Open(File.Path).Worksheet s(1).[a3]
.Value = " "
.Parent.Parent.Close -1
End With

With Workbooks.Open(File.Path).Worksheet s(1).PageSetup
.RightHeader = " &""Arial,полужирный""Колонтитул"
ActiveSheet.Name = "Лейбл"
.Parent.Parent.Close -1
End With
Next

End Sub

Вот на этом примере можно это упростить? Чтобы каждый раз не закрывалось - открывалось?

Последний раз редактировалось tibhar940; 10.09.2012 в 16:14. Причина: Правка:
tibhar940 вне форума Ответить с цитированием
Старый 10.09.2012, 19:38   #10
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub PaketnayaObrabotka()
'On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemO bject")
Set folder = Fso.GetFolder("C:\Documents and Settings\1")
MsgBox folder.Name
For Each File In folder.Files
With Workbooks.Open(File.Path).Worksheets(1)
.[a1].Value = "Слова слова слова"
.[a3].Value = " "
with .PageSetup
.RightHeader = " &""Arial,полужирный""Колонтитул"
ActiveSheet.Name = "Лейбл" ' это не понял, мы работаем с Worksheets(1)
end with
.Parent.Parent.Close -1
End With
Next
End Sub
>> Как вставлять в тело сообщения на форуме код с подсветкой?
tibhar940, пожалуйста, пользуйтесь тегами оформления кода. Это знак диез(решетка) над окном редактирования:-)
PS писал с коленки, не проверял.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 10.09.2012 в 19:54.
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт значений из нескольких документов Word в одну таблицу Excel для дальнейших расчетов. YJYNGK Microsoft Office Excel 0 30.10.2010 13:42
Возможно ли изменить колонтитул нескольких документов сразу Grant84 Microsoft Office Word 2 14.04.2010 18:41
Печать документов. Busine2009 Microsoft Office Word 8 18.06.2009 14:36
автозаполнение из нескольких документов Азамат Microsoft Office Excel 2 04.06.2008 11:25