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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.06.2008, 15:12   #1
Град
Пользователь
 
Регистрация: 07.04.2008
Сообщений: 36
По умолчанию Как запустить макрос при изменении другой книги Excel?

Друзья, помогите!

Задача такая:
На сетевом диске лежит файл Excel (Условно назовём "БАЗА"). Существует другой файл (Условно назовём "Отчет").
Так вот, надо сделать так что бы при изменении "БАЗА", даже если он будет закрыт и просто его пересохранили, в "Отчет" заработал макрос. Допустим, пишет в ячейке А1 листа "Правка" фразу "файл был изменен"
Спасибо.
Град вне форума
Старый 04.06.2008, 15:43   #2
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Событие на запись перехватывать надо... Но это нужно чтобы у Вас и у того, кто будет его открывать в настройке Excel по умолчанию макросы стартовались...
knight вне форума
Старый 04.06.2008, 16:00   #3
Град
Пользователь
 
Регистрация: 07.04.2008
Сообщений: 36
По умолчанию

Тот файл даже открыаться не будет. он будет автоматически обновляться. Я пробовал сделать ссылку одного файла на другой (на определенную ячейку, которая стопудово изменится при обновлении) и через каждую минуту обновлять связи, но что то не получилось.
Private Sub Worksheet_Change(ByVal Target As Range)

If Range("H1").Value = "1" Then
Workbook.UpdateLink Name:= _
"K:\Group\Sales\Аналитика\БАЗА.xls" , Type _
:=xlExcelLinks
Else
Range("A1").Value = Time
End If
End Sub

но дает ошибку. не пойму(
Град вне форума
Старый 04.06.2008, 16:35   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

В файле отчет при старте формируем отчет из базы и записываем время последнего изменения базы. Потом с помощью application.OnTime через определенное время, сверяем время последнего сохранения базы с тем, что записали на старте. Если не совпадают... обновляем данные, перезаписываем время последнего сохранения базы. И снова онТайм...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 04.06.2008, 16:52   #5
Град
Пользователь
 
Регистрация: 07.04.2008
Сообщений: 36
По умолчанию

Спасибо! Щас попробую. думаю должно получиться
Град вне форума
Старый 04.06.2008, 17:39   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот заготовочка:
дата последнего изменения базы записывается в ячейку(1,1). Необходимо заменить на реальную секретную ячейку и раскомментировать две строки, где это делается. В таком виде, как здесь записано, обновления будут происходить постоянно.
UpDateData - необходимо наполнить необходимым кодом.


Код:
Sub auto_open()
  UpDateData
'  Записываем в ячейку время последнего обновления
'  Cells(1, 1) = FileDT
  TimerLoop
End Sub


Sub UpDateData()
'тут пишем как обновить данные из базы

End Sub



Function FileDT() As Date
 Dim fs, f
 Set fs = CreateObject("Scripting.FileSystemObject")
 Set f = fs.GetFile("K:\Group\Sales\Аналитика\БАЗА.xls")
 FileDT = f.Datelastmodified
End Function



Sub TimerLoop()
 With Sheets(1)
  If Cells(1, 1) <> FileDT Then
    UpDateData
'    Cells(1, 1) = FileDT
  End If
  Application.OnTime Now + TimeValue("00:01:00"), "TimerLoop"
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 09.06.2008, 18:42   #7
Град
Пользователь
 
Регистрация: 07.04.2008
Сообщений: 36
По умолчанию

Спасибо, еще не совсем допонял, но разберусь.

Помогите еще с одной проплемой:

У меня в ячейке А1 переодически меняется значение, после этого в ячейке Н8 пишется "1" вот по этому макросу

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Range("H8").Value = "1"
End Sub

Беда в том, что потом он зацикливается. Excel принимает за изменение в ячейке H8...., а мне надо чтобы он принимал за изменение ТОЛЬКО в ячеке А1.
Как сделать?
Град вне форума
Старый 09.06.2008, 19:00   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

одной из первых строк в
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
пишем
If Intersect(Range("H8"), Target) Is Target Then Exit Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 09.06.2008, 19:28   #9
Ulagay700
Пользователь
 
Регистрация: 07.11.2007
Сообщений: 91
По умолчанию

По первому вопросу - средствами только Экселя это сделать затруднительно, нужно, имхо, систему подключать
Ulagay700 вне форума
Старый 09.06.2008, 19:44   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Град Посмотреть сообщение
фразу "файл был изменен".
Для этого, достаточно в свойство файла заглянуть, там все будет, даже время, когда, файл был изменен!
valerij вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт данных из другой книги AntonFox Microsoft Office Excel 8 18.08.2008 17:17
макрос VBA Excel Bor Microsoft Office Excel 5 25.01.2008 12:20
Как мне из формы одного проекта запустить другой Diimka Помощь студентам 2 13.12.2007 21:41
использование в макросе другой книги Роня Microsoft Office Excel 19 13.09.2007 15:47