1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
1

Close и Save документа Word

03.04.2011, 15:51. Показов 29665. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Close и Save документа Word, не могу в них врубиться, посмотрите пжл, три
нижепреведённые строки правильно закомметировали, если нет поправьте

Visual Basic
1
2
3
4
5
6
7
8
9
'1 закрываем документ, чтобы не появлялось предупреждение о сохранении
ActiveDocument.Close SaveChanges:=False
 
'2 закрываем документ без сохранения, ноль в скобках обозначает, что сохранение документа при закрытии не 
'требуется, иначе будет отображен диалог "Сохранить документ"
ActiveDocument.Close (0)
 
'3 закрываем документ без сохранения, диалог "Сохранить документ" отображаться не будет
ActiveDocument.Close wdDoNotSaveChanges
Подскажите, мне надо условие составить
если пользователь своими руками ничего не изменял в документе
PureBasic
1
If ActiveDocument.Undo = True Then
тогда сохранить без диалога "Сохранить документ"
как ????

Добавлено через 17 часов 15 минут
понял, что надо использовать строку:
PureBasic
1
ActiveDocument.Close (wdDoNotSaveChanges)
Но проблема в синтаксе, поправьте пжл
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2011, 15:51
Ответы с готовыми решениями:

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа
Добрый вечер. Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что...

Apache POI - save MS Word (*.doc)
Накидал навскидку функцию, которая (вроде-как) читает из файла-шаблона *.doc данные, заменяет...

Заполнение документа Word несколько раз данными из другого документа
есть некий документ Word(test.docx). Нужно создать новый документ(test1.docx), и заполнить его...

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл ворд разбивался на 5...

14
Заблокирован
03.04.2011, 16:20 2
Help - Справка Microsoft Visual Basic - Microsoft Word Visual Basic Reference - Methods - C - Close Method - Close Method as it applies to the Document and Documents objects.
0
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
03.04.2011, 16:23  [ТС] 3
читал раз 100, говорю не могу врубиться
'Close - Закрывает указанный документ или документы.

'Doc.Close (SaveChanges, OriginalFormat, RouteDocument)
'SaveChanges опциональный вариант. Указывает, сохранять действий по документу
'Может быть одной из следующих констант WdSaveOptions:
'wdDoNotSaveChanges, wdPromptToSaveChanges, wdSaveChanges
'Не сохраняйте изменения, предложение сохранить изменения, сохраните изменения
'OriginalFormat опциональный вариант. Определяет формат сохранения документа
'Может быть одной из следующих констант WdOriginalFormat:
'wdOriginalDocumentFormat, wdPromptUser, wdWordDocument
'Оригинальный Document Format, проворная пользователя, документ Word
'RouteDocument опциональный вариант. Правда, чтобы направить документ на следующей получателя
'Если документ не имеет маршруте прилагается, этот аргумент игнорируется

Подскажите пожалуйста с примерм
0
Заблокирован
03.04.2011, 16:25 4
Ципихович Эндрю,
там пример есть, в котором написан синтаксис.
0
13106 / 5887 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
03.04.2011, 16:28 5
Например, такой способ можно применить:
Visual Basic
1
2
3
4
5
6
  'Если в документе есть изменения - тогда сохраняем.
  If Not ActiveDocument.Saved Then
    ActiveDocument.Save
  End If
  'Закрываем документ.
  ActiveDocument.Close
---
Код простой, но делает то что надо - если документ ещё не связан с файлом, то будет выведен диалог сохранения. Если файл уже есть и имеются изменения - сохранит, если файл есть и изменений нет - сохранять не будет.
1
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
03.04.2011, 16:43  [ТС] 6
Mawrat Ваш скрипт выполняет, получаем ошибку Ошибка команды

Добавлено через 4 минуты
Цитата Сообщение от Mawrat Посмотреть сообщение
Если в документе есть изменения, тогда
Решать надо строго: IF ActiveDocument.Undo = True THEN
0
13106 / 5887 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
03.04.2011, 16:45 7
Я проверял - у меня работает.
Вот полностью код, который я запускал:
Visual Basic
1
2
3
4
5
6
7
8
Sub Sub1()
  'Если в документе есть изменения - тогда сохраняем.
  If Not ActiveDocument.Saved Then
    ActiveDocument.Save
  End If
  'Закрываем документ.
  ActiveDocument.Close
End Sub
0
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
03.04.2011, 16:50  [ТС] 8
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
если пользователь своими руками ничего не изменял в документе
это то Вы наверное выполняете, но есть но:
Затруднения вызывает то что в этом документе есть Комбобокс и по открытию документа в него прога сама закидывала строки
0
13106 / 5887 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
03.04.2011, 17:00 9
В общем, тут надо рассмотреть вопрос о том, в каких случаях надо сохранять документ в файл. И требуется ли делать отмену изменений в документе.
1. Если надо выполнять сохранение в случае, если файл на диске отличается от содержания открытого в Word документа. Тогда подойдёт этот код:
Visual Basic
1
2
3
4
5
6
7
8
Sub Sub1()
  'Если в документе есть изменения - тогда сохраняем.
  If Not ActiveDocument.Saved Then
    ActiveDocument.Save
  End If
  'Закрываем документ.
  ActiveDocument.Close
End Sub
2. Если надо сначала откатить все изменения, которые были выполнены над содержимым документа, тогда так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Sub1()
  'Откатываем все изменения.
  While ActiveDocument.Undo
  Wend
  'Если документ отличается от версии, сохранённой в файле - тогда сохраняем.
  If Not ActiveDocument.Saved Then
    ActiveDocument.Save
  End If
  'Закрываем документ.
  ActiveDocument.Close
End Sub
---
А вот если требуется различать изменения сделанные пользователем от тех изменений, которые сделала программа - в этом случае задача усложняется...
Undo откатывает любые изменения - независимо от того как они сделаны - пользователем или программно.
0
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
03.04.2011, 17:17  [ТС] 10
в предыдущем посте скрипт 1
опробовал
был шаблон 1.дот время изменения 12:00
открыл, ничего не делал закрываю, вылазит форма ошибка команды и время изменеия свежее, не то
2 скрипт пробую

Добавлено через 7 минут
2 скрипт опробовал тоже самое
0
13106 / 5887 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
03.04.2011, 17:22 11
Наверное лучше в начале исследуемого кода поставить точку останова и прогнать его по шагам. Такое ощущение, что ошибка происходит где-то в другом месте. Потому что выше представленные процедуры в чистом виде нормально отрабатывают.
0
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
03.04.2011, 17:27  [ТС] 12
Цитата Сообщение от Mawrat Посмотреть сообщение
ActiveDocument.Close
А что там останавливаться, всего 5-6 строк, на указанной строке форма: Ошибка команды
0
13106 / 5887 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
03.04.2011, 17:39 13
А на какой строке ошибка команды?
0
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
03.04.2011, 17:54  [ТС] 14
на этой
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ActiveDocument.Close
Добавлено через 2 минуты
Нашёл источник:
книга Хорева В.Д.

170 Глава 7. В мире объектов MS Office
Documents.Close wdPromptToSaveChanges
Закрыть текущий документ без сохранения:
ActiveDocument.Close wdDoNotSaveChanges

делаю:

PureBasic
1
2
3
4
5
'условие, если не было в документе отмен, тогда ...
If ActiveDocument.Undo = False Then
'закрыть текущий документ без сохранения
ActiveDocument.Close wdDoNotSaveChanges
End If
Получаю Ошибка команды и запрос на сохранение, а мне не нужно ни того ни другого
0
1584 / 554 / 71
Регистрация: 10.04.2009
Сообщений: 9,034
05.04.2011, 20:32  [ТС] 15
по большому счёту эта строка:
PureBasic
1
If ActiveDocument.Undo = False Then Dialogs(wdDialogFileSaveAs).Execute
мне как бальзам на душу за исключением того, что если бы не сохранялся шаблон с текущим временем
0
05.04.2011, 20:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2011, 20:32
Помогаю со студенческими работами здесь

ASP и WORD, проблема в строке oObj.Documents(stDocFile).Save
имею непонятную мне проблему: set oObj=Server.CreateObject('Word.Application.9')...

При открытии документа word 2013 в word 2010 меняется структура текста
Здравствуйте. Для вуза сделал в ворд 2013 два реферата. Пошел распечатывать. Оказалось, что в том...

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании...

Запрет на Save, QuickSave, Save As в Excel
Приветствую! В Excel надо запретить запись если заполнена ячейка из диапазона1 и не заполнена...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru