Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 4 ]
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Тема: Как узнать были ли изменения в документе пользователем
Как узнать были ли изменения в документе пользователем
Думал сделать так
Documents(ActiveDocument).Undo 1 'отмена действий, в количестве ... шт.
И если пользователь ничего не делал выдаст ошибку №
И тогда мне нужно так:
If ошибка № ... Then Dialogs(wdDialogFileSaveAs).Execute
Но ведь можно же как то после этой строки: Documents(ActiveDocument).Undo 1 отследить
изменились ли что? как?
Как узнать сколько реально возможно в документе сделать Ундо раз??
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: Как узнать были ли изменения в документе пользователем
Говорить, что Undo работает с изменениями документа, не совсем точно. Undo - отмена последнего действия (нескольких действий) содержащегося в Undo-буфере.
Результат Undo проверяется и без On Error:
If ActiveDocument.Undo = False Then MsgBox "Буфер отмены пуст!"
Также можно проверить параметр ActiveDocument.Saved.
Количество элементов в буфере считываем их элементов интерфейса MS Word, т.е. из кнопок "Отменить" и "Вернуть". Это работает во всех версиях MS Word:
Sub A()
Dim U&, R&
If Doc_UndoRedoCount(U, R) Then
MsgBox "Количество элементов в Undo/Redo буфере активного документа: " & vbLf & _
"отмена (undo): " & CStr(U) & vbLf & _
"вернуть (redo): " & CStr(R)
Else
MsgBox "Нет открытых документов!"
End If
End Sub
Public Function Doc_UndoRedoCount( _
Optional ByRef UndoCount As Long, _
Optional ByRef RedoCount As Long) As Boolean
' подсчет количества элементов в Undo и Redo буферах (-1 при ошибке)
' возвращает True, пи успехе
Doc_UndoRedoCount = False
On Error Resume Next
UndoCount = -1
RedoCount = -1
If ActiveDocument Is Nothing Then Exit Function
Doc_UndoRedoCount = True
' список "Отмена"
Const c_ID_Undo& = 128 ' Id списка "Отмена"
Dim undoBtn As CommandBarComboBox
Set undoBtn = Application.CommandBars.FindControl(Id:=c_ID_Undo)
If undoBtn Is Nothing Then
Else
UndoCount = 0
UndoCount = undoBtn.ListCount
End If
' список "Вернуть"
Const c_ID_Redo& = 129 ' Id списка "Вернуть"
Dim redoBtn As CommandBarComboBox
Set redoBtn = Application.CommandBars.FindControl(Id:=c_ID_Redo)
If redoBtn Is Nothing Then
Else
RedoCount = 0
RedoCount = redoBtn.ListCount
End If
End Function
Отредактировано Вождь (25.07.2010 04:38:08)
Макросы под заказ и готовый пакет - mtdmacro.ru
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Как узнать были ли изменения в документе пользователем
Вождь пишет:Буфер отмены пуст
Я Вам очень благодарен, всего лишь одна строка кода и здравый смысл восторжествовал:
Sub AutoClose()
'AutoClose работает при закрытии документа Ворд
'условие, если буфер отмены пуст, тогда ...
'закрыть документ, не сохраняя его и при этом не выводить диалог о его сохранении
If ActiveDocument.Undo = False Then Dialogs(wdDialogFileSaveAs).Execute
End Sub
Остался только один нюанс, который даже если и не решится можно и обойтись, а именно:
теперь ведь в документе, когда я редактирую код ВБА, документ закрывается без вопросов
И ведь по идее всё верно, Ундо пустое нет вопросов к ВБА.
Но уж для полного счастья как условие ещё поставить если изменялся код ВБА, тогда также спросить о сохранении документа???
А так всё равно спасибо большое.
- Вождь
- Модератор
- Неактивен
- Зарегистрирован: 07.01.2010
- Сообщений: 745
- Поблагодарили: 181
Re: Как узнать были ли изменения в документе пользователем
Ципихович Эндрю пишет:...
' условие, если буфер отмены пуст, тогда ...
If ActiveDocument.Undo = False Then
...
ActiveDocument.Undo - это не параметр, а команда идентичная ActiveDocument.Undo(1), т.е. учитывайте что она выполняет одну отмену. Лучше (и для изменений кода) писать так:
If ActiveDocument.Saved = False Then
Макросы под заказ и готовый пакет - mtdmacro.ru
Сообщений [ 4 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как узнать были ли изменения в документе пользователем
В век Интернета разобраться в чем-либо стало одновременно и проще и сложней. Как это? Сейчас поясним на примере. На портале о Microsoft Office Word вы узнаете про: сделать линии в word.
Давайте возьмем, допустим, мощнейший редактор текста, всем хорошо известный и почти каждым используемый Microsoft Word. На портале о Microsoft Office Word вы узнаете про: рамки для документ ворд.
Казалось бы, о нем мы знаем все, он как супруг, с которым прожили много лет. Но, как человека нельзя изучить на 100 %, так и эта программа таит в себя множество скрытых функций и возможностей. На портале о Microsoft Office Word вы узнаете про: служебные символы в конце строки word.
Часто человек и не задумывается о них, пока вдруг не понадобятся. И вот тут-то все просто и сложно, потому что информации в Интернете масса, но ее еще надо найти и отсортировать. Наш сайт о Microsoft Office Word даст ответ про: как изменить в файле поле автор.
Впрочем, если вы обратитесь на форум Ворд Эксперт, просеивать песок в поисках золотых крупиц не придется. Наш сайт о Microsoft Office Word даст ответ про: программа из пда в ворд.
И работать с Word по-старинке тоже. На нашем сайте собрана вся необходимая информация, ссылки на литературу, вопросы, которые тревожат пользователей довольно часто. Наш сайт о Microsoft Office Word даст ответ про: как писать математические выражения в word 2003.
Настройкам различных версий программы и форматированию, редактированию текстов посвящен целый раздел. На портале о Microsoft Office Word вы узнаете про: как сделать в word лист а4.
В другом разделе вас научат, как автоматизировать работу, в третьем предложат готовые решения (написанные другими пользователями макросы, схемы и так далее). Наш сайт о Microsoft Office Word даст ответ про: сноски концевые не автоматические.
Наконец, если вы все-таки не нашли то, что необходимо вам в данный момент, можете оставить заявку.
Потратив несколько минут на чтение форума сайта Ворд Эксперт, вы сэкономите гораздо больше времени. На портале о Microsoft Office Word вы узнаете про: чтоб не нумероввал первую страницу первую страницу ворд.