Страницы: 1
RSS
Надстройка для сохранения документа с назначенной периодичностью
 
Всем привет! Помогите создать надстройку для excel 2007, чтобы при работе с документом каждые 10,15,20 минут (или задаваемое время) выскакивала табличка с сообщением "вы хотите сохранить изменения в файле таком то?"...."да" "нет". Либо подскажите где можно почитать похожую тему? Спасибо.
 
А штатное автосохранение не нравится?
 
нужна именно надстройка, чтобы возможно было установить выборочно ее для особо одаренных людей...
 
Нашел макрос..., возможно ли код автосохранения переписать на ручной режим с запросом что то типа r = MsgBox("Сохранить файл?", vbYesNoCancel)?


Книга
Код
[/CODE]
Private Sub Workbook_Open()
Автосохранение
End Sub
[CODE]


Модуль AutoSave
Код
[/CODE]
Sub Автосохранение()
' Автосохранение через заданный период времени
Dim W As Workbook
Application.OnTime Now + TimeValue("00:15:00"  ;)  , "Автосохранение"
For Each W In Application.Workbooks
W.Save
Next W
[CODE]
Изменено: rodion - 14.03.2013 14:29:55
 
!. Для отправки кода на форму используйте тег КОД.
2. С какой целью столько межстрочных пробелов?
 
Поправил..., Юрий М подскажите пожалуйста с кодом?
Изменено: rodion - 14.03.2013 14:39:46
 
А запрос когда нужен - на открытие книги?
 
Нужно только для активной (с которым работаешь не посредственно) открытой книги, если одновременно открыты другие книги файла excel, то к ним (им) не нужно обращаться.
 
Попробуйте так (в модуль книги):
Код
Private Sub Workbook_Open()
    If MsgBox("Запустить макрос автосохранения?", vbYesNo + 32) = vbNo Then
        Exit Sub
    Else
        Call Автосохранение
    End If
End Sub
 
Юрий М, нужен макрос, который автоматически после 15 минуты открытия книги (а в последующем и каждые 15 минут этой открытой книги) выдавал сообщение "вы хотите сохранить изменения в этом файле? и мне в этом сообщении давал бы выбор кнопками ДА, НЕТ или ОТМЕНА. При нажатии на кнопку с ДА, документ бы сохранялся.
В представленном мною макросе автосохранение происходит автоматически и это хорошо... где то это мне даже устраивает, но мне нужно, чтобы был такой макрос который предлагал мне самому сохранять или нет... открытый файл.
Изменено: rodion - 14.03.2013 15:30:33
 
Ну так и выводите этот запрос после Application.OnTime
 
Простите Юрий М, но мне сложно сделать (я не совсем в этом разбираюсь), прошу Вашей помощи, напишите пожалуйста полный код?
 
Попробуйте так: В стандартный модуль:
Код
Public Flag As Boolean
Sub Автосохранение()
' Автосохранение через заданный период времени
Dim W As Workbook
    If Flag Then
        Application.OnTime Now + TimeValue("00:00:05"), "Автосохранение"
        If MsgBox("Продолжить автосохранения?", vbYesNo + 32) = vbNo Then
            Flag = False
        End If
    End If
    For Each W In Application.Workbooks
        W.Save
    Next
End Sub


В модуль книги:
Код
Private Sub Workbook_Open()
    Flag = True
    Call Автосохранение
End Sub
 
Юрий М, спасибо Вам большое, попробую по испытать несколько дней
 
Юрий М доброе утро! Очень помогли, спасибо Вам. Подскажите пожалуйста, при сообщении "Продолжить автосохранения?" нажимаю ДА сохраняет, нажимаю НЕТ тоже сохраняет, а нельзя ли, чтобы при нажатии кнопки ДА документ сохранялся, а при нажатии кнопки НЕТ, документ не сохранялся, и чтобы появилась команда ОТМЕНА, при нажатии которой макрос отменялся и не тревожил пока не запустился по новому любой документ EXCEL. Я понял, что нужно изменить vbYesNoCancel и дополнительная кнопка появится, но команда не выполняется и что такое +32?
 
Попробуйте (не проверял):
Код
If MsgBox("Продолжить автосохранения?", vbYesNo + 32) = vbNo Then
    Flag = False
    exit sub
End If

32 - это иконка знака вопроса.
 
Отлично, спасибо, а как чтобы при нажатии на кнопку ОТМЕНА макрос автосохранения не срабатывал больше, если я изменяю строчку:
Код
If MsgBox("Продолжить автосохранения?", vbYesNoCancel + 32) = vbNo Then
 
В данном случае я не понимаю необходимости в кнопке "Отмена": "Да" - запросы продолжаются, "Нет" - запросы прекращаются. Что будет делать "Отмена"?
В общем случае следует добавить проверку:
If MsgBox("Продолжить автосохранения?", vbYesNoCancel + 32) = vbCancel Then 'Тут Ваши действия.
Поэкспериментируйте сами - пользы больше будет )
 
Ок, спасибо
Страницы: 1
Читают тему
Наверх