2016-02-10 3 views
-1

Может ли кто-нибудь узнать, как связать автономный макрос, чтобы автоматически запускать таблицу или запрос?Отправлять электронную почту с приложением, когда какая-либо таблица обновляется

Я ищу адрес электронной почты с прикрепленным объектом, который будет отправляться каждый раз, когда обновляется «таблица имен пользователей».

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

Любая помощь была бы принята с благодарностью.

Благодаря Paula

+0

Просьба пояснить, что вы подразумеваете под «автоматическим запуском таблицы или запроса»? Если вы имеете в виду таблицу Data Macro, например «Before Change», вы можете просто вызвать публичные функции VBA в любом доступном действии, например, в действии 'IF' –

+0

@SergeyS. Я ищу электронное письмо с прикрепленным объектом, которое будет отправляться каждый раз, когда обновляется «таблица имени пользователя», но единственный способ сделать это - создать базовый макрос, который я связал с таблицей «имя пользователя» в том смысле, что он отправит электронное письмо, но я не могу заставить его работать, когда обновляется «таблица имен пользователей». Единственный способ, которым я мог видеть вокруг этого, - это поместить его в функцию после вставки на самой таблице, но я не могу найти способ связать это. – Paula

+0

Таблица имени пользователя, скорее всего, обновляется через форму, нет? Если да, не можете ли вы просто запустить макрос в событии OnClick любой кнопки, которую вы нажимаете для записи/обновления записи имени пользователя? –

ответ

0

Использование макроса данных для отправки электронной почты является плохой идеей, он резко тормозит обновление таблицы. Лучше всего отправлять электронную почту из формы, которая обновляет таблицу имени пользователя, использовать событие формы AfterUpdate.

Если вы все еще хотите использовать макрос данных для вызова любого кода и встроенным в действии SendEmail в После обновления события таблицы не достаточно, создать публичную функцию VBA, например MySendObject и вызывать ее из макроса данных с помощью If действий:

If MySendObject([ID]) Then 
End If 

или SetField:

SetField 
Name ResultsOfSending 
Value = MySendObject([ID]) 
+1

Если вы запускаете код события в форме, он будет «замедлять ... обновление» так же, как и код макроса данных. В чем значительная разница, которая делает код формы «лучше», чем код макроса данных в отношении «медлительности» обновлений? –

+0

Если вы обновляете таблицу с помощью макроса данных непосредственно во время обслуживания или во время других операций, которые не требуют отправки писем при каждом обновлении, макрос данных лишний замедляет выполнение обновления. Макрос данных работает еще медленнее, чем одна и та же операция в запросе или наборе записей, я считаю, что это потому, что он хранится как XML, а не p-код как скомпилированное исполнение VBA или SQL-кода. Кроме того, макрос данных нельзя отлаживать во время выполнения, обработка ошибок хуже, чем в VBA. –

+0

Спасибо, я закончил тем, что смог использовать функцию после обновления, чтобы я мог отправить электронное письмо для внесения конкретных изменений. не смог получить его, чтобы отправить объект, но у меня есть основная информация, которая мне нужна. – Paula

1

Если SendEmail action из После обновления data macro недостаточно для ваших нужд, то другой вариант был бы для этого тот же макрос данных, чтобы записать соответствующую информацию в таблицу «очереди», а затем выполнить отдельную запланированную задачу каждые несколько минут (или около того) для отправки электронной почты с использованием более полнофункционального механизма, такого как CDO (пример here).