Тема: ВБА остановит время???
имеется поле вида текущая дата, то есть TIME \@ "d MMMM yyyy 'г.'", его перед печатью мне надо остановить при помощи ВБА, как?????
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
имеется поле вида текущая дата, то есть TIME \@ "d MMMM yyyy 'г.'", его перед печатью мне надо остановить при помощи ВБА, как?????
имеется поле вида текущая дата, то есть TIME \@ "d MMMM yyyy 'г.'", его перед печатью мне надо остановить при помощи ВБА, как?????
Так и хочется сослаться на Юпитера .
Расскажите, понятнее, в чем состоит задача. Может, все-таки не стоит изменять системное время?
Есть документ в нём есть поле вида TIME \@ "d MMMM yyyy 'г.'", если ничего не предпринимать и распечатать документ
тогда на бумаге будет всё верно а компьютерном варианте документа дата всегда будет текущая. Вот мне её и надо остановить но не прибегая к Унлинку. Я писал код:
If Trim$(ActiveDocument.Fields(1).Code) Like "*TIME*" Then
Позиция_начала_поля_TIME = ActiveDocument.Fields(1).Result.Start
Позиция_конца_поля_TIME = ActiveDocument.Fields(1).Result.End
Set Поле00 = ActiveDocument.FormFields.Add(Range:=ActiveDocument.Range(Start:=Позиция_начала_поля_TIME, End:=Позиция_конца_поля_TIME), Type:=wdFieldFormTextInput)
ActiveDocument.Bookmarks(Поле00.Name).Delete 'удалить закладку с именем ... НЕ ЛЮБЛЮ ЛИШНИХ ЗАКЛАДОК
Поле00.Result = Format(Date, "d MMMM yyyy г.") 'присваивание текстовому полю ..., значения ...
End If
Прогоняя его пошагово вижу, что всё идёт по плану, но в конечном итого после распечатки поле таким же и осталось TIME \@ "d MMMM yyyy 'г.'", подскажите как решить эту проблему.
После пошагового прогона поле не обновляется, а перед распечаткой обновилось. Ничего удивительного. Но в чем же все-таки задача? Чем Вас не усраивает применение метода Unlink? Почему нельзя просто вставить дату без всякого поля?
Вы говорите:
После пошагового прогона поле не обновляется, а перед распечаткой обновилось. Ничего удивительного.
Я бы сказал, что я не могу найти никак эту грань сначала всё хорошо, после чего всё отклоняется от задуманного
Нельзя примененять метод Unlink потому что справа от этого поля в котором всегда текущая дата стоят 11 полей макробуттон которые выглядят как >5>4>3>2>1 0 1<2<3<4<5< Нажимая на них это поле, его дата относительно текущей уменьмается или увеличивается на ... дней. Почему нельзя просто вставить дату без всякого поля: потому что у этих макробуттонов инструкция к результату самого левого поля но не макробуттон добавить отнять .. дней и оно может это поле ещё пригодиться.
Наткнулся на вашу тему, возможно вам нужно встроенное в Word поле PRINTDATE.
Формат поля - дата. Word в этом поле хранит и автоматически обновляет последнюю дату печати документа.
Отредактировано motl (24.11.2010 12:34:43)
Насчет
TIME @ "d MMMM yyyy 'г.'"
Может я что-то туплю, но по мне это текущее время - оно обязано обновляться.
Еще не пойму - а в какой момент вы его хотите остновить?
Делаете печать - обновится,
Делаете предпросмотр - обновится
Делаете обновление полей F9 - обновится
Так когда?
Если же действительно нужно просто поле с датой, то можно следующее
1) Использовать соответствующие имеющиеся поля, хранящие дату CREATEDATE, PRINTDATE, SAVEDATE
2) Использовать поле {FormText} - на сайте про него писали http://wordexpert.ru/page/table-word2 + Вставка\Дата Время с выкл влажком обновление
3) Использовать Ctrl+F9 -> {} и туда как в 2 вставить Дату + еще раз вставить дату, но уже рядом с полем. Т.о. для печати будет использоваться отображаемый текст, а для перехода - скрытое поле.
Кстати, а что за устройство у вас такое странное - скажите что за доки у вас так организованы - глядишь - пригодится
Этот вопрос подзабыл
Вот строка скрипта
Set Поле00 = ActiveDocument.FormFields.Add(Range:=ActiveDocument.Range(Start:=Поз1, End:=Поз2), Type:=wdFieldFormTextInput)
Её действие в промежутке высчитанным ранее Поз1 и Поз1 добавляется поле, как ещё указать в этой строке свойства добавляемого поля: Тип, Текст по умолчанию, Формат текста????????
Из помощи:
expression.Add(Range, Type)
expression Required. An expression that returns a FormFields object.Range Required Range object. The range where you want to add the form field. If the range isn't collapsed, the form field replaces the range.
Type Required WdFieldType.The type of form field to add.
Т.е. как я понимаю в одном операторе никак
С колес - Макрорекордер
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.InsertDateTime DateTimeFormat:="M/d/yyyy", InsertAsField:=False, _
DateLanguage:=wdEnglishUS, CalendarType:=wdCalendarWestern, _
InsertAsFullWidth:=False
Доработать зубилом и рашпилем Удачи
Это не то
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Строкой выше в месте где стоял курсор вы добавили поле
Selection.InsertDateTime DateTimeFormat:="M/d/yyyy", InsertAsField:=False, _
DateLanguage:=wdEnglishUS, CalendarType:=wdCalendarWestern, _
InsertAsFullWidth:=False
Строкой выше вы правее добавленного поля добавили 11/27/2010
А надо было в том добавленном поле задать его
свойства: Тип, Текст по умолчанию, Формат текста
Эндрю, вы не любопытны я же написал
Доработать зубилом и рашпилем
немного практики с Макрорекордером + минимум стилистической правки
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
With Selection.FormFields(1)
.Name = "MyDateField"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = False
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .TextInput
.EditType Type:=wdDateText, Default:="11.01.2010", Format:= _
"DD.MM.YYYY"
.Width = 0
End With
End With
Только уж вместо Default поле вставьте сами - ведь реально так и не понятно - какая же у вас там дата должна жить...
Раз уж есть Макрорекордер - заставьте его работать на вас
Отредактировано VBA-addict (30.11.2010 18:01:55)
спасибо большое!!!!
я как мог разбирался с кодом, закомментировал, посмотрите если не сложно правильны ли комметарии
у кое каких строк не понял как закомментировать????
Не подскажете или ссылку дайте пжл
И ещё интерисует Максимальная длина как устанавливается???
Спасибо заранее
Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormTextInput
With ActiveDocument.FormFields(1)
.Name = "MyDateField" 'поле Закладка
.EntryMacro = "" 'поле Выполнить макрос при входе, где указывается имя нужного макроса
.ExitMacro = "" 'поле Выполнить макрос при выходе, где указывается имя нужного макроса
.Enabled = False 'включено ???? что
.OwnHelp = False '????
.HelpText = "" 'кнопка Текст справки
.OwnStatus = False '????
.StatusText = "" '?????
With .TextInput
'Type - поле Тип
'Default - поле Дата по умолчанию
'Format - поле Формат даты
.EditType Type:=wdDateText, Default:="11.01.2010", Format:="DD.MM.YYYY"
.Width = 0 'ширина поля
End With
End With
Отредактировано Ципихович Эндрю (30.11.2010 20:15:01)
Там где есть комментарии - все правильно
только .TextInput.Width=0 'unlimited text length - бесконечная длина текстовой строки, которая на поверку имеет ограничение 256 символов внешняя ссылка - т.к. сам не пользую больше не проясню.
.Formfields соответствует нажатию правой кнопки на поле и открытию формы Свойства поля
Покопайтесь там - найдете все соответсвия - у меня англ. офис - не знаю - стоит ли приводить названия элементов здесь - как откроете свойства - легко сопоставите....
еще стоит добавить ActiveDocument.FormFields(1).Update в конец процедуры для автообновления поля после вставки.
Отредактировано VBA-addict (01.12.2010 13:42:46)
с учётом сказанного подправил, а как закомментировать где вопросики ????
'добавить в месте нахождения курсора поле ввода
Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormTextInput
With ActiveDocument.FormFields(1) 'соответствует нажатию правой кнопки на поле и открытию формы Свойства поля
.Name = "MyDateField" 'поле Закладка
.EntryMacro = "" 'поле Выполнить макрос при входе, где указывается имя нужного макроса
.ExitMacro = "" 'поле Выполнить макрос при выходе, где указывается имя нужного макроса
.Enabled = False 'включено ???? что
.OwnHelp = False '????
.HelpText = "" 'кнопка Текст справки
.OwnStatus = False '????
.StatusText = "" '?????
With .TextInput
'Type - поле Тип
'0 - Обычный текст
'1 - Число
'2 - wdDateText, то есть Дата
'3 - Текущая дата
'4 - Текущее время
'5 - Вычесление
'Default - поле Дата по умолчанию
'Format - поле Формат даты
.EditType Type:=wdDateText, Default:="11.01.2010", Format:="DD.MM.YYYY"
.Width = 1 'поле Максимальная длина, то есть ширина поля, имеет ограничение 256 символов
End With
End With
ActiveDocument.FormFields(1).Update 'автообновления поля ... после вставки данных в поля формы поля
Результат_поля = ActiveDocument.FormFields(1).Result
Эндрю, закомментировать строку кода можно так же, как вы добавляете описательный текст (свои комментарии) - добавьте в начало строки значок комментария (клавиша с русской буквой "Э") в латинской раскладке. Или же кликните по кнопке "Comment block" на панели инструментов редактора кода.
вопрос то в том что обозначают эти строки, чо туда именно написать
.Enabled = False 'включено ???? что
.OwnHelp = False '????
.OwnStatus = False '????
.StatusText = "" '?????
Эндрю, так для этого есть справка в редакторе кода. Ставите курсор мыши на нужном свойстве и нажимаете клавишу F1. Появится окно с помощью по данному свойству.
Очевидно и без справки, что свойство Enabled = False означает неактивность.
так то оно так, но у всех строк
.Enabled = False 'включено ???? что
.OwnHelp = False '????
.OwnStatus = False '????
.StatusText = "" '?????
справка:
The keyword you selected can't be found in Visual Basic Help. You may have misspelled the keyword, selected too much or too little text, or asked for help on a word that isn't a valid Visual Basic keyword.
The keyword you want help on may be contained within an object library that is not referenced. Make sure references are set to the appropriate object libraries for all objects used in your code.
The easiest way to get help on a specific keyword is to position the insertion point anywhere within the keyword and press F1. You don't have to select the keyword. In fact, if you select only a portion of the keyword, or more than a single word, Help won't find what you're looking for.
The Value property topic is displayed when you press F1 with the insertion point between the "a" and the "l" in the Value keyword as shown in the following example.
Worksheets(1).Range ("A2").value=3.14159
To use the built-in Help Search, click Microsoft Visual Basic Help on the Help menu.
Грош цена этой справке!!!!!!
И ещё как советовал ВБА аддикт
ActiveDocument.FormFields(1).Update
не пойдёт!!!
Так пойдёт:
ActiveDocument.Fields(1).Update 'автообновления поля ... после вставки данных в поля формы поля
Отредактировано Ципихович Эндрю (02.12.2010 20:44:24)
В данном случае справку можно было вызвать сначала для объекта FormField, а уже из нее просмотреть свойства, принадлежащие данному объекту.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
ВБА остановит время???
У многих людей работа на компьютере связана с написание текстов или вычиткой чужих. И как же жалко, порой бывает, когда человек пишет по сто раз в тексте на 10 000 страниц «В Урюпинском районе», не подозревая, что в умной программе Microsoft Word спряталась кнопка автозамены, или убивает вечер, стирая по одному лишние пробелы в чужом, небрежном дипломном проекте. Наш сайт о Microsoft Office Word даст ответ про: повторить строки заголовка. Да мало ли…
Умудренный вы пользователь или чайник, но всегда что-то новое интересно узнать, а может и поделиться своими наработками с народом. Наш сайт о Microsoft Office Word даст ответ про: автопперенос в ворде. На форуме сайта Ворд Эксперт вы сможете легко сделать как первое, так и второе.
Очень удобный форум, всего с несколькими главными, строго по теме разделами. На портале о Microsoft Office Word вы узнаете про: формула для подсчета данных в ворде произведение. Минимум флуда (для него специальный раздел, но даже там общение тематическое), ответы на вопросы, как новичков, так и опытных пользователей. На портале о Microsoft Office Word вы узнаете про: форматирование списков в excel развёрнутый вид. На форуме можно научиться делать макросы, подсмотреть чужое оригинальное решение или предложить свое. На портале о Microsoft Office Word вы узнаете про: поиск в wird. Также можно сделать заказ, озвучив свое желание в подразделе «заявки на разработку».
Вы найдете тонкости настройки и использования разных версий Ворда. На портале о Microsoft Office Word вы узнаете про: vba сохранить range в bmp. Форумчане подскажут, как лучше отформатировать текст, какие функции Ворда в каких случая наиболее оптимально использовать и многое другое. На портале о Microsoft Office Word вы узнаете про: не работает редактор формул в office 2010 64 bit. Несомненно, работа в редакторе текста станет легче и приятнее с форумом нашего портала.