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

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

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

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

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

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

Цитата:
Сообщение от kuklp Посмотреть сообщение
Код:
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 писал с коленки, не проверял.
Пробовал вчера так. Ругается на
Код:
.Parent.Parent.Close -1
tibhar940 вне форума Ответить с цитированием
Старый 11.09.2012, 16:45   #12
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Пробовал вчера так. Ругается на
Код:
.Parent.Parent.Close -1
а вы поместите его в блок With и оно заработает...

Код:
...
With Workbooks.Open(File.Path).Worksheets(1)
.[a1].Value = "Слова слова слова"
.[a3].Value = " "
.PageSetup.RightHeader = " &""Arial,полужирный""Колонтитул"
.Name = "Лейбл" ' это можно так сделать
.Parent.Close -1
End With
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 11.09.2012 в 16:49.
DiemonStar вне форума Ответить с цитированием
Старый 11.09.2012, 16:47   #13
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Гы) Да замените на
.Parent.Close -1
и будет Вам СЧАСТЬЕ!
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 11.09.2012, 17:17   #14
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
Радость

Цитата:
Сообщение от kuklp Посмотреть сообщение
Гы) Да замените на
.Parent.Close -1
и будет Вам СЧАСТЬЕ!
Шикарно, всё получается. Кроме некоторых аспектов.
Не пойму как переделать 3 элемента кода вставив их в тело With.

1)
Код:
With Workbooks.Open(File.Path).Worksheets(1).PageSetup
Columns("D:D").Delete
Columns("O:O").Delete
Columns("Q:Q").Select
Selection.Interior.ColorIndex = xlNone
.Parent.Parent.Close -1
End With
2)
Код:
With Workbooks.Open(File.Path).Worksheets(1).[a2]
.Replace What:="за период", Replacement:="в течение периода", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
.Parent.Parent.Close -1
End With
3)
Код:
With Workbooks.Open(File.Path).Worksheets(1).PageSetup
If instrumentik <> "" Then
Range("A1").Select
ActiveCell.Replace What:="INSTRUMENT", Replacement:=instrumentik, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
End If
.Parent.Parent.Close -1
End With
tibhar940 вне форума Ответить с цитированием
Старый 12.09.2012, 09:22   #15
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Да, вроде как, очевидно:
Код:
.Range("D:D,p:P").Delete
.[p:p].Interior.ColorIndex = xlNone
.[a2].Replace "за период", "в течение периода", xlPart
.PageSetup
If instrumentik <> "" Then
.Range("A1").Replace "INSTRUMENT", instrumentik, xlPart
End If
:-) Писалось с коленки, мож где че подправить придется.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.09.2012, 09:37   #16
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Да, вроде как, очевидно:
Код:
.Range("D:D,p:P").Delete
.[p:p].Interior.ColorIndex = xlNone
.[a2].Replace "за период", "в течение периода", xlPart
.PageSetup
If instrumentik <> "" Then
.Range("A1").Replace "INSTRUMENT", instrumentik, xlPart
End If
:-) Писалось с коленки, мож где че подправить придется.
Ну на самом деле пока не очевидно) Просто я начал это дело изучать исходя из анализа записанных макросов, потом еще немного почитал по ресурсам. И к форматированию в рамках макроса у меня вопросов вообще не возникает. Но вот с телом With несколько иначе и сразу перестроиться и осмыслить не получается. Опять же извиняюсь, если выражаюсь технически не совсем грамотно.

Спасибо большое!
tibhar940 вне форума Ответить с цитированием
Старый 12.09.2012, 09:50   #17
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Да, вроде как, очевидно:
Код:
.Range("D:D,p:P").Delete
.[p:p].Interior.ColorIndex = xlNone
.[a2].Replace "за период", "в течение периода", xlPart
.PageSetup
If instrumentik <> "" Then
.Range("A1").Replace "INSTRUMENT", instrumentik, xlPart
End If
:-) Писалось с коленки, мож где че подправить придется.
Что-то ругается на:
Код:
[a2].Replace "за период", "в течение периода", xlPart
runtime error 424 object required
tibhar940 вне форума Ответить с цитированием
Старый 12.09.2012, 09:51   #18
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Возможно, Вам легче будет понять метод With, убрав его декларацию и проставить префикс With в каждое выражение внутри With. Т.е., например:
Код:
set w=Workbooks.Open(File.Path).Worksheets(1)
w.Range("D:D,p:P").Delete
w.[p:p].Interior.ColorIndex = xlNone
w.[a2].Replace "за период", "в течение периода", xlPart
w.PageSetup
If instrumentik <> "" Then
w.Range("A1").Replace "INSTRUMENT", instrumentik, xlPart
End If
Вот чтоб в каждой строке(обращении) не указывать родительский объект, мы вычисляем его один(!) раз и все последующие ссылки на него обозначаем точкой:
Код:
.Range("D:D,p:P").Delete
так понятней?:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.09.2012, 09:56   #19
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

>> Что-то ругается на:...
Ну выложите пример, где ругается. Посмотрим, подправим.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.09.2012, 09:57   #20
tibhar940
Пользователь
 
Регистрация: 31.07.2012
Сообщений: 79
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Возможно, Вам легче будет понять метод With, убрав его декларацию и проставить префикс With в каждое выражение внутри With. Т.е., например:
Код:
set w=Workbooks.Open(File.Path).Worksheets(1)
w.Range("D:D,p:P").Delete
w.[p:p].Interior.ColorIndex = xlNone
w.[a2].Replace "за период", "в течение периода", xlPart
w.PageSetup
If instrumentik <> "" Then
w.Range("A1").Replace "INSTRUMENT", instrumentik, xlPart
End If
Вот чтоб в каждой строке(обращении) не указывать родительский объект, мы вычисляем его один(!) раз и все последующие ссылки на него обозначаем точкой:
Код:
.Range("D:D,p:P").Delete
так понятней?:-)
ОЙ, извините!! я закрыл файлы экселевские ( .Parent.Close -1) и там нечему было оперировать)
tibhar940 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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