Я не думаю, что вы сможете сделать это с помощью простого макроса, но вы можете заставить его работать с надстройкой.
Надстройка будет:
События Trap, в частности событие SelectionChanged.
Каждый раз, когда происходит событие, код обработки события сравнивает текущее время со временем его последнего срабатывания (сохраняется в статической переменной).
Если с момента последнего события прошло более x минут, сохраняется презентация и сбрасывается время последнего запуска.
Если событие никогда не срабатывает во время сеанса, это означает, что ничего не изменилось, поэтому нет реальной причины для сохранения.
Дальнейшее уточнение: до или после проверки разницы во времени проверьте свойство презентации .Saved. Если True, то в презентации ничего не изменилось, поэтому опять нет причин для сохранения.