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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2009, 16:18   #1
polomus
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 1
По умолчанию Как ускорить макрос в Excel 2003

Есть набор книг реализованных в Excel, для достижения желаемого результата необходимо обновлять данные по определенному (известному) порядку.

Для обновления файлов я использую процедуру:

Private Sub Открыть(Имя_файла)
Workbooks.Open Filename:=Имя_файла, UpdateLinks:=3
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

Общий макрос имеет вид:

Private Sub Общий()
Application.ScreenUpdating = False
Открыть("c:\Ф1.xls")
Открыть("c:\Ф2.xls")
Application.ScreenUpdating = True
End Sub

Однако, таких файлов у меня больше сотни.

Подскажите, пожалуйста, как можно ускорить работу общего макроса?

Спасибо за ответы.
polomus вне форума Ответить с цитированием
Старый 04.12.2009, 12:12   #2
андей
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 69
По умолчанию

отключение автоматического вычисления очень ускоряет процесс
файлы (если они в одной папке) очень удобно открывать с помощью Filesearch
Андрей
андей вне форума Ответить с цитированием
Старый 04.12.2009, 13:40   #3
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

Path()

Dir()

почитай про это.
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Старый 04.12.2009, 16:15   #4
voam
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 40
По умолчанию

Попробуйте воспользоваться следующей процедурой:

Код:
Sub Main()
Dim strFile As String
Dim strPath As String

Application.ScreenUpdating = False
strPath = "C:\"
strFile = Dir(strPath & "*.xls")
Do Until strFile = ""
  Открыть strPath & strFile
strFile = Dir
Loop
Application.ScreenUpdating = True

End Sub
Предполагается, что в корне диска C, где осуществляется поиск файлов, находятся только нужные файлы Excel.
voam вне форума Ответить с цитированием
Старый 04.12.2009, 16:25   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Я может чего-то не понимаю? Человек просил ускорить процедуру, а не сократить код.
Еще есть вот это:
Цитата:
необходимо обновлять данные по определенному (известному) порядку
А выполняется процедура долго из-за того, что долго обновляются ссылки. Или я не прав?
Если я все-таки прав, то горю помочь нечем.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 04.12.2009 в 16:28.
The_Prist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите запустить глючащий макрос для WORD 2003 Gamekowal Microsoft Office Word 2 07.01.2010 00:08
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
Формула, Excel 2003 Sharrik Microsoft Office Excel 2 21.04.2009 09:33
Как переименовать диапазон в Excel 2003? viter.alex Microsoft Office Excel 14 16.01.2009 02:07
Как запустить макрос при изменении другой книги Excel? Град Microsoft Office Excel 12 10.06.2008 10:01