Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 18.02.2009, 17:44   #1
AvivNoa
Пользователь
 
Регистрация: 18.02.2009
Сообщений: 10
Репутация: 14
По умолчанию Динамическое изменение даты

Добрый день . Прошу помочь в следующем вопросе.

(если спрашиваю глупость- не забрасывайте камнями).

В Worde - вставляю ( Insert-ом) (интерфейс англицкий) - Date and Time (в текст) , и рядом хочу что бы в продолжении текста, изменялось динамически следующая вставка времени (добавлялось ,например , 9 месяцев)

Пример:
Зачатие произошло 1.01.2001 ,
ожидаемое рождение ребенка (1.01.2001)+9месяцев = 1.10.2001


как можно применить формулу для изменения даты.
Наверняка есть стандартная формула в ВОРДЕ, просто я никогда этим не занималась.

Спасибо за помощь.

Noa
AvivNoa вне форума   Ответить с цитированием
Старый 19.02.2009, 06:58   #2
Sasha_Smirnov
Особый статус
Профессионал
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Адрес: Петербург
Сообщений: 1,533
Репутация: 691
По умолчанию Проба старого пера

Вот попробуйте для начала.
Программа тупо добавляет 9 мес. к той дате, что вы выделили в документе, — и печатает (ниже) новую.

Необходимо в Региональных стандартах Windows выбрать русский (или другой язык, где точки являются допустимыми в формате дат).

Код:
Sub ToFitTheDate()
Const NESKOLKO = 9
Dim dateNew As Date

With Selection
    
    If Not IsDate(.Text) Then MsgBox "Необходимо выделить ДАТУ.": Exit Sub
    
    MsgBox "Прибавляю " & NESKOLKO & " месяцев."
    
    dateNew = DateAdd("m", NESKOLKO, DateValue(.Text)) 'добавили NESKOLKO месяцев'
    
    .Collapse Direction:=wdCollapseEnd 'снятие выделения (с исходной даты)'
    
    .MoveRight wdSentence   'перемещение в следующее предложение (если оно есть)'
    
    .TypeParagraph          'печать абзаца (это для наглядности)'
    
    .TypeText Format(dateNew, "D.mm.yyyy") 'печать новой даты'
        
End With
End Sub
(В приложенном файле есть готовая кнопка — «Date FIT», пробуйте!)
Вложения
Тип файла: doc Decret.doc (36.0 Кб, 92 просмотров)

Последний раз редактировалось Sasha_Smirnov; 20.02.2009 в 02:18.
Sasha_Smirnov вне форума   Ответить с цитированием
Старый 19.02.2009, 10:20   #3
AvivNoa
Пользователь
 
Регистрация: 18.02.2009
Сообщений: 10
Репутация: 14
По умолчанию

спасибо за ответ
Наверное я некорректно изложила свою проблему, если она заставила Вас так задумываться, а так понимаю , что проблема моя решается гораздо проще (если знать где копать )
Попытаюсь еще раз изложить суть проблемы . Имеется документ о проведении проверки , ну предположим следующего содержания :

% Я испектор сантехнадзова Сидоров Вася 10.02.09 произвел проверку ........................... следующей проверки 10.04.10 %

Так вот моя задача, при открытии файла в место где дата проверки текущей, "вкидывается " (системой- из Insert- Data and Time)- сегодняшняя дата , а в место где имеется "дата следующей проверки" - система сама добавляет заранее заданное число месяцев или дней.
Навярняка в ВОРДЕ имеется такая функция- просто я не могу её найти .
Функция типа DATA(dd/mm/yyyy)+DATA(dd/mm/yyyy), что то типа такого .
Спасибо за помощь
Noa
AvivNoa вне форума   Ответить с цитированием
Старый 19.02.2009, 17:04   #4
Sasha_Smirnov
Особый статус
Профессионал
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Адрес: Петербург
Сообщений: 1,533
Репутация: 691
По умолчанию

Текущая дата вставляется сочетанием альт-шифт-D.

При следующем открытии (или при печати) она обновляется, если так настроен Word, или (выделив её) по F9.

А вот получить, в виде поля, предстоящую дату — не получается. Даже если в поле "Формула" сложить дату (сегодняшнюю) и 1 — то поле (после обновления) даёт 1 (а не завтрашнюю дату).

В то же время в программе такое действие проходит на ура. Так что присылайте документ — бум думать!

Последний раз редактировалось Sasha_Smirnov; 20.02.2009 в 02:17. Причина: исправил альт-F9 на F9.
Sasha_Smirnov вне форума   Ответить с цитированием
Старый 19.02.2009, 17:14   #5
AvivNoa
Пользователь
 
Регистрация: 18.02.2009
Сообщений: 10
Репутация: 14
По умолчанию

отвечаю
во первых спасибо за желание помочь
файл документа приложен
спасибо

во получилось приложить файлик
Вложения
Тип файла: doc ДОКУМЕНТ.doc (24.0 Кб, 89 просмотров)

Последний раз редактировалось Stilet; 07.11.2015 в 11:34.
AvivNoa вне форума   Ответить с цитированием
Старый 19.02.2009, 20:23   #6
viter.alex
Балуюсь кодами
Профессионал
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Адрес: Харків, Україна
Сообщений: 1,803
Репутация: 716

icq: 194381182
skype: viter.alex
По умолчанию

Не знаю, что-то кажется мне, что полями здесь не отделаешься.
Нужно пользовать макрос. Может встроенные элементы формы? К ним можно нужный макрос прикрутить. Да…
__________________
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума   Ответить с цитированием
Старый 20.02.2009, 00:00   #7
Sasha_Smirnov
Особый статус
Профессионал
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Адрес: Петербург
Сообщений: 1,533
Репутация: 691
По умолчанию Попытка ту

Да полями-то можно — да только знать их на уровне ассемблера! (А мы не таковские!)

Посему опять таки пробный макрос.

Код:
Sub FindDateFieldAndComputeOther()
Const Q = 1 'количество добавляемых к текущей дате дней, месяцев или лет'
Dim byteQ As Byte, dateSys As Date, dateTemp As Date

With ActiveDocument.Fields
    byteQ = .Count          'количество полей в активном документе'
    If byteQ = 0 Then Exit Sub 'если полей 0, программе работать не с чем'
    .Update                 'обновляем поля (дата - становится сегодняшней)'
    If Not .Item(1).ShowCodes Then _
    .ToggleShowCodes        'делаем коды полей видимыми'
End With


If byteQ < 4 Then _
MsgBox "В документе """ & ActiveDocument & """ меньше 4 полей;" & vbCr & _
"чтобы добавить, где Вам нужно, поля даты, жмите <Alt>+<Shift>+D": Exit Sub

With Selection
    .HomeKey (wdStory)      'кусор - в начало документа'
    .Find.Text = "^d"       'ищем поле (от курсора и далее)'
    .Find.Wrap = wdFindStop
    .Find.Execute           'нашли и выделили'

    If InStr(UCase(.Text), "DATE") Then
        .Fields.ToggleShowCodes 'переключили поле к виду "значение поля";'
                                	'теперь выделена сегодняшняя дата'
        dateSys = .Text     'сохранили значение даты в переменной dateSys'
        .Collapse           	'сняли с неё выделение'
    Else
        MsgBox "Документ не содержит поле DATE сразу за курсором.": Exit Sub
    End If
    
    
    dateTemp = dateSys + 1              'добавили 1 день'
    .Find.Execute           'нашли следующее поле'
                            	'это не обязательно дата, - любое поле Word;'
                            	'достаточно нажать контрол-F9 в нужных вам местах'
    .TypeText dateTemp      'напечатали (вместо него) дату завтрашнего дня'
    
    dateTemp = DateAdd("m", Q, dateSys) 'добавили Q месяцев'
    .Find.Execute           'нашли следующее поле'
    .TypeText dateTemp      'напечатали (вместо него) дату через Q месяцев'
    
    dateTemp = DateAdd("YYYY", Q, dateSys) 'добавили Q лет'
    .Find.Execute           'нашли следующее поле'
    .TypeText dateTemp      'напечатали (вместо него) дату через Q лет'
End With
End Sub
А в 2.doc — жмите кнопку «Next DATE».
И ради всего святого, не лепите лишних пробелов в Ваших образцовых текстах. А то прокляну:-)
Вложения
Тип файла: doc 2.doc (43.0 Кб, 70 просмотров)

Последний раз редактировалось Sasha_Smirnov; 20.02.2009 в 00:24. Причина: изменил в примечаниях 1 на константу (Q лет).
Sasha_Smirnov вне форума   Ответить с цитированием
Старый 20.02.2009, 00:30   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,858
Репутация: 5617
Лампочка решение с использованием вычислений в полях

по ссылке многоуважаемого Aent (c форума forum.developing.ru)
нашёл статью Formatting Word fields with switches

и там есть ссылочка на любопытнейший файлик - DateCalc.zip - 81kb - (Updated 1/5/2008) A document containing instructions and examples of just about every date calculation you could wish for.

во вложении, решение задачи исключительно используя вычисления в полях!!!

p.s. Внимание! Не забывать обновлять поля выделив текст и нажав F9 !!
Вложения
Тип файла: doc ДОКУМЕНТ2.doc (26.5 Кб, 242 просмотров)

Последний раз редактировалось Serge_Bliznykov; 20.02.2009 в 00:32.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 20.02.2009, 00:58   #9
Sasha_Smirnov
Особый статус
Профессионал
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Адрес: Петербург
Сообщений: 1,533
Репутация: 691
По умолчанию Набор текста в Word и умные поля

Это ж моя прошлогодняя мечта! Супер, Серж. Жаль, что не сам.

Последний раз редактировалось Sasha_Smirnov; 20.02.2009 в 01:55. Причина: убрал p/s.
Sasha_Smirnov вне форума   Ответить с цитированием
Старый 20.02.2009, 00:59   #10
viter.alex
Балуюсь кодами
Профессионал
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Адрес: Харків, Україна
Сообщений: 1,803
Репутация: 716

icq: 194381182
skype: viter.alex
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
…И ради всего святого, не лепите лишних пробелов в Ваших образцовых текстах. А то прокляну:-)
Это уж как полагается.

А человек-то нашел! Завтра печатаю, и учиться, учиться, учиться
__________________
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое изменение URL страницы в JavaScript без перезагрузки страницы ilusha JavaScript, Ajax 7 25.02.2009 10:59
Динамическое суммирование cat2182 Microsoft Office Excel 1 19.11.2008 08:53
Динамическое MainMenu dr.Chas Общие вопросы Delphi 4 24.06.2008 20:33
Динамическое меню? Ice_Juice Microsoft Office Excel 12 03.03.2008 12:24
Динамическое создание объекта Fruit Общие вопросы Delphi 5 24.01.2008 12:00


15:09.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.