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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 01:04   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

После того, как файл открыт, срабатывает строка
Код:
Application.Run "test.xlsm!Лист4.CommandButton1_Click"
Но дальше проверить не смог - нет у меня такого пути/файла, как хочет код.
А переносить код в файл-инструмент думаю и впрямь не стОит
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2012, 01:17   #12
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

спасибо, щас попробую...
столкнулся с другой проблемой ещё более глупой - а как это дело запустить?
вроде запустил просто через запуск макроса, щас выдаёт всякие ошибки, пока разбираюсь..

Последний раз редактировалось drNabla; 24.04.2012 в 01:22.
drNabla вне форума Ответить с цитированием
Старый 24.04.2012, 01:35   #13
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

возникла неточность - строчка
Код:
Application.Run "test.xlsm!Лист4.CommandButton1_Click"
вызывает только файл с именем test, а надо все те которые есть в папке, как это подправить?
drNabla вне форума Ответить с цитированием
Старый 24.04.2012, 09:10   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В цикле открываете файлы, берёте в переменную их имя.
Далее в коде примерно так:
Код:
переменная_с_именем_файла = wb.Name
...
...
Application.Run переменная_с_именем_файла & "!Лист4.CommandButton1_Click"
Ну или если это имя файла нигде больше не нужно - можно без переменной, сразу подставляйте wb.Name
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2012, 09:15   #15
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

А может лучше сделать выполнение макроса при открытии книги и в нём открывать следующий файл из директории?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 24.04.2012, 10:03   #16
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

Вечером попробую с wb.Name. Щас решил проблему проще - создал много папок и в каждой папке отдельный файл с одним и тем же именем.... надо было срочно поставить на ночь считаться. Появилась другая проблема - при появлении какой либо ошибки в одном из файлов, весь процесс останавливался. Можно это как-то решить? (при возникновении ошибки процесс вычисления тормазится этот файл игнорируется закрывается и открыывается следующий)
про запуск макроса при открытии - мне потом с этими файлами ещё много рабоатьа, а чтоб макрос запускался при открытии - это не приемлимо... действующий вариант полностью удовлетворяет.
drNabla вне форума Ответить с цитированием
Старый 24.04.2012, 10:28   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ошибки можно обработать - почитайте про это

Можно просто добавить on error resume next, но думаю Вам нужно ещё анализировать значение err и в зависимости от этого сохранять или нет файл, и плюс ещё вероятно нужно писать лог, чтоб утром посмотреть, что там наработало
Т.е. перед открытием файла сбрасываем err, открываем-запускаем, смотрим err - сохраняем или нет, пишем в лог. Как-то так...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2012, 10:41   #18
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

всё гораздо проще - аналог логов у меня есть, плюс я добавил выполнение ещё парочки кнопок, я точно знаю какие обработались какие нет. Природа ошибок как правила одна и та же, в одном месте возникает деление на ноль, я потом вручную даже 10 файлов могу подправить.
Как я понимаю мне после это должно выглядеть так:
Код:
For Each file In fso.Files
        If file.Name Like "*.xls*" Then
            Set wb = Workbooks.Open(file)
            With wb.Sheets(5)
            
            Application.Run wb.Name & "!Лист4.CommandButton1_Click"
            Application.Run wb.Name & "!Лист5.CommandButton7_Click"
            Application.Run wb.Name & "!Лист5.CommandButton10_Click"
            Application.Run wb.Name & "!Лист5.CommandButton11_Click"
            on error resume next

            End With
            wb.Close True
        End If
    Next
или надо после каждого обращения к кнопке ставить строчку с ошибкой на случай ошибки в одной из них?

Последний раз редактировалось drNabla; 24.04.2012 в 10:44.
drNabla вне форума Ответить с цитированием
Старый 24.04.2012, 10:56   #19
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Попробуйте так:

Код:
    On Error Resume Next
    For Each file In fso.Files
        If file.Name Like "*.xls*" Then
        
            Set wb = Workbooks.Open(file)
            Application.Run wb.Name & "!Лист4.CommandButton1_Click"
            Application.Run wb.Name & "!Лист5.CommandButton7_Click"
            Application.Run wb.Name & "!Лист5.CommandButton10_Click"
            Application.Run wb.Name & "!Лист5.CommandButton11_Click"

            If Err Then wb.Close True Else wb.Close 0
            'или вероятно можно так:
            'wb.Close (Err = 0)
            Err.Clear
            
        End If
    Next
With wb.Sheets(5) в этом куске не нужно (если это нужно в полном варианте - можете оставить).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2012, 10:59   #20
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

хорошо попробую, может даже щас на день запущу, вечером приду проверю, отпишусь о получившемся.
drNabla вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторное выполнение макроса Jaroslav Microsoft Office Excel 3 26.07.2009 10:12
Как остановить выполнение макроса ? kzld Microsoft Office Excel 2 19.07.2009 13:16
Выполнение макроса при нажатии на Лист KinderX Microsoft Office Excel 7 01.07.2009 17:19
Открытие необходимой группы в локальной сети (UNC) nixstill Работа с сетью в Delphi 0 15.01.2009 13:56
Выполнение макроса во всех листах Bu$ter Microsoft Office Excel 18 14.11.2008 14:34