Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2012, 12:26   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,034
По умолчанию Тестовое поле, тип дата, формат даты

Здравствуйте
Word, тестовое поле, тип дата, формат даты, вот они форматы:
1 февраля 2012 г. - d MMMM yyyy 'г.'
среда, 1 февраля 2012 г. - dddd, d MMMM yyyy 'г.'
1 февраля 2012 г. - d MMMM yyyy 'г.'
1 февраля 12 г. - d MMMM yy 'г.'
2012-02-01 - yyyy-MM-dd
1-фев-12 - d-MMM-yy
1/февраля/2012 - d/MMMM/yyyy
1 фев. 12 г. - d MMM. yy 'г.'
1/февраля/12 - d/MMMM/yy
февраль 12 - MMMM yy
фев-12 - MMM-yy
12 февраля 2012 г. 0:00 - d MMMM yyyy 'г.' H:mm
12 февраля 2012 г. 0:00:00 - d MMMM yyyy 'г.' H:mm:ss
12:00 - h:mm am/pm
12:00:00 - h:mm:ss am/pm
12:00 - HH:mm
12:00:00 - HH:mm:ss
можно ли и как сделать там свои форматы?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 07.04.2012, 12:53   #2
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Можно создать и свой формат вот пример кода поля форматированного по моим параметрам
CREATEDATE \@ "MMMM, dddd, dd, 'год' yyyy" \s
Дата представляется в виде
апрель, суббота, 07, год 2012
Пименов Александр вне форума Ответить с цитированием
Старый 07.04.2012, 12:54   #3
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Тег \s выводит форматы на русском языке
Пименов Александр вне форума Ответить с цитированием
Старый 07.04.2012, 13:04   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,034
По умолчанию

как это
CREATEDATE \@ "MMMM, dddd, dd, 'год' yyyy" \s
пишется, если так вставить в ВБЕ, всё красное
Ципихович Эндрю вне форума Ответить с цитированием
Старый 07.04.2012, 18:16   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Чтоб не краснело

Код:
Sub DateToTheText()
    With Selection
    .Fields.Add .Range, _
        Text:="CREATEDATE \@ ""MMMM, dddd, dd, 'год' yyyy"" \s", _
        preserveformatting:=False
    .TypeParagraph
    End With
End Sub
Изображения
Тип файла: jpg 2012-04-07_18-14_Wordfields_Createdate.jpg (51.3 Кб, 144 просмотров)

Последний раз редактировалось Sasha_Smirnov; 07.04.2012 в 18:58.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 07.04.2012, 21:17   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,034
По умолчанию

наплодилось много всяких полей, относительного предложенного в посте 5 рулит код
Код:
Dim a As String
a = ActiveDocument.Fields(1).Code
a = ActiveDocument.Fields(1).Result
a = ActiveDocument.Fields(1).Type
а как можно его узнать что-то типа имя, отличить от другого?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.04.2012, 02:24   #7
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Код:
Sub WhatFieldIsThis()
Dim f, i
    With ActiveDocument
        For Each f In .Fields
        i = i + 1
        MsgBox .Fields.Item(i).Code.Text ' причём .Text не обязательно
        Next
    End With
End Sub
Изображения
Тип файла: png TextOfTheFieldcode.png (11.7 Кб, 143 просмотров)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 08.04.2012, 04:22   #8
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,034
По умолчанию

и как этот ответ отвечает на вопрос "а как можно его узнать что-то типа имя, отличить от другого?"
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.04.2012, 12:29   #9
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Вообще я например пользуюсь методом создания модуля класса нужного мне объекта, поясню на примере.
Допустим мне нужно знать определенные свойства и характеристики объекта Field (Тип поля, Код поля, Результат поля).
1. Я создаю класс с именем clsField в шаблоне Normal, чтобы использовать нужные мне свойства в открываемых и создаваемых документах.
2. Для определения свойств поля Код поля и Результат поля в модуле clsField я создаю 2 простые функции
Код:
Public Function FieldCode(f As Field) As String 'Код поля Field
    FieldCode = f.Code.Text
End Function

Public Function FieldResulit(f As Field) As String ' Результат поля Field
    FieldResulit = f.Result.Text
End Function
3. Теперь мне нужно создать функцию определения Типа поля, для этого я создаю список типов полей существующих в Word и создаю свойство
Код:
Public Property Get ListFieldType() As Variant ' Список типов полей Field
Dim lst(-1 To 97) As String
    lst(-1) = "Empty"
    lst(3) = "Ref"
    lst(4) = "IndexEntry"
    lst(5) = "FootnoteRef"
    lst(6) = "Set"
    lst(7) = "If"
    lst(8) = "Index"
    lst(9) = "TOCEntry"
    lst(10) = "StyleRef"
    lst(11) = "RefDoc"
    lst(12) = "Sequence"
    lst(13) = "TOC"
    lst(14) = "Info"
    lst(15) = "Title"
    lst(16) = "Subject"
    lst(17) = "Author"
    lst(18) = "KeyWord"
    lst(19) = "Comments"
    lst(20) = "LastSavedBy"
    lst(21) = "CreateDate"
    lst(22) = "SaveDate"
    lst(23) = "PrintDate"
    lst(24) = "RevisionNum"
    lst(25) = "EditTime"
    lst(26) = "NumPages"
    lst(27) = "NumWords"
    lst(28) = "NumChars"
    lst(29) = "FileName"
    lst(30) = "Template"
    lst(31) = "Date"
    lst(32) = "Time"
    lst(33) = "Page"
    lst(34) = "Expression"
    lst(35) = "Quote"
    lst(36) = "Include"
    lst(37) = "PageRef"
    lst(38) = "Ask"
    lst(39) = "FillIn"
    lst(40) = "Data"
    lst(41) = "Next"
    lst(42) = "NextIf"
    lst(43) = "SkipIf"
    lst(44) = "MergeRec"
    lst(45) = "DDE"
    lst(46) = "DDEAuto"
    lst(47) = "Glossary"
    lst(48) = "Print"
    lst(49) = "Formula"
    lst(50) = "GoToButton"
    lst(51) = "MacroButton"
    lst(52) = "AutoNumOutline"
    lst(53) = "AutoNumLegal"
    lst(54) = "AutoNum"
    lst(55) = "Import"
    lst(56) = "Link"
    lst(57) = "Symbol"
    lst(58) = "Embed"
    lst(59) = "MergeField"
    lst(60) = "UserName"
    lst(61) = "UserInitials"
    lst(62) = "UserAddress"
    lst(63) = "BarCode"
    lst(64) = "DocVariable"
    lst(65) = "Section"
    lst(66) = "SectionPages"
    lst(67) = "IncludePicture"
    lst(68) = "IncludeText"
    lst(69) = "FileSize"
    lst(70) = "FormTextInput"
    lst(71) = "FormCheckBox"
    lst(72) = "NoteRef"
    lst(73) = "TOA"
    lst(74) = "TOAEntry"
    lst(75) = "MergeSeq"
    lst(77) = "Private"
    lst(78) = "Database"
    lst(79) = "AutoText"
    lst(80) = "Compare"
    lst(81) = "Addin"
    lst(82) = "Subscriber"
    lst(83) = "FormDropDown"
    lst(84) = "Advance"
    lst(85) = "DocProperty"
    lst(87) = "OCX"
    lst(88) = "Hyperlink"
    lst(89) = "AutoTextList"
    lst(90) = "ListNum"
    lst(91) = "HTMLActiveX"
    lst(92) = "BidiOutline"
    lst(93) = "AddressBlock"
    lst(94) = "GreetingLine"
    lst(95) = "Shape"
    lst(96) = "Citation"
    lst(97) = "Bibliography"
    ListFieldType = lst
End Property
Процедуру автоматизации создания списков можно обсудить позднее если интересно!!!

Теперь достаточно легко создать функцию определения типа поля
Код:
Public Function FieldType(f As Field) As String ' Òèï ïîëÿ Field
    FieldType = ListFieldType(f.Type)
End Function
Теперь у нас готов класс clsField функции, методы и свойства которого мы можем применять в различных макросах, процедурах и других классах.
4. Теперь я в в шаблоне Normal модуль modField, в который буду заносить все процедуры связанные с действиями объекта Field, например процедура вывода информации о выделенных полях FieldInfo (см. Вложение)
5. Далеу все просто, назначаю кнопку для макроса FieldInfo и получаю нужный результат
Вложения
Тип файла: doc Field_1.doc (53.5 Кб, 17 просмотров)
Пименов Александр вне форума Ответить с цитированием
Старый 08.04.2012, 12:33   #10
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Вообще я например пользуюсь методом создания модуля класса нужного мне объекта, поясню на примере.
Допустим мне нужно знать определенные свойства и характеристики объекта Field (Тип поля, Код поля, Результат поля).
1. Я создаю класс с именем clsField в шаблоне Normal, чтобы использовать нужные мне свойства в открываемых и создаваемых документах.
2. Для определения свойств поля Код поля и Результат поля в модуле clsField я создаю 2 простые функции
Код:
Public Function FieldCode(f As Field) As String 'Код поля Field
    FieldCode = f.Code.Text
End Function

Public Function FieldResulit(f As Field) As String ' Результат поля Field
    FieldResulit = f.Result.Text
End Function
3. Теперь мне нужно создать функцию определения Типа поля, для этого я создаю список типов полей существующих в Word и создаю свойство
Код:
Public Property Get ListFieldType() As Variant ' Список типов полей Field
Dim lst(-1 To 97) As String
    lst(-1) = "Empty"
    lst(3) = "Ref"
    lst(4) = "IndexEntry"
    lst(5) = "FootnoteRef"
    lst(6) = "Set"
    lst(7) = "If"
    lst(8) = "Index"
    lst(9) = "TOCEntry"
    lst(10) = "StyleRef"
    lst(11) = "RefDoc"
    lst(12) = "Sequence"
    lst(13) = "TOC"
    lst(14) = "Info"
    lst(15) = "Title"
    lst(16) = "Subject"
    lst(17) = "Author"
    lst(18) = "KeyWord"
    lst(19) = "Comments"
    lst(20) = "LastSavedBy"
    lst(21) = "CreateDate"
    lst(22) = "SaveDate"
    lst(23) = "PrintDate"
    lst(24) = "RevisionNum"
    lst(25) = "EditTime"
    lst(26) = "NumPages"
    lst(27) = "NumWords"
    lst(28) = "NumChars"
    lst(29) = "FileName"
    lst(30) = "Template"
    lst(31) = "Date"
    lst(32) = "Time"
    lst(33) = "Page"
    lst(34) = "Expression"
    lst(35) = "Quote"
    lst(36) = "Include"
    lst(37) = "PageRef"
    lst(38) = "Ask"
    lst(39) = "FillIn"
    lst(40) = "Data"
    lst(41) = "Next"
    lst(42) = "NextIf"
    lst(43) = "SkipIf"
    lst(44) = "MergeRec"
    lst(45) = "DDE"
    lst(46) = "DDEAuto"
    lst(47) = "Glossary"
    lst(48) = "Print"
    lst(49) = "Formula"
    lst(50) = "GoToButton"
    lst(51) = "MacroButton"
    lst(52) = "AutoNumOutline"
    lst(53) = "AutoNumLegal"
    lst(54) = "AutoNum"
    lst(55) = "Import"
    lst(56) = "Link"
    lst(57) = "Symbol"
    lst(58) = "Embed"
    lst(59) = "MergeField"
    lst(60) = "UserName"
    lst(61) = "UserInitials"
    lst(62) = "UserAddress"
    lst(63) = "BarCode"
    lst(64) = "DocVariable"
    lst(65) = "Section"
    lst(66) = "SectionPages"
    lst(67) = "IncludePicture"
    lst(68) = "IncludeText"
    lst(69) = "FileSize"
    lst(70) = "FormTextInput"
    lst(71) = "FormCheckBox"
    lst(72) = "NoteRef"
    lst(73) = "TOA"
    lst(74) = "TOAEntry"
    lst(75) = "MergeSeq"
    lst(77) = "Private"
    lst(78) = "Database"
    lst(79) = "AutoText"
    lst(80) = "Compare"
    lst(81) = "Addin"
    lst(82) = "Subscriber"
    lst(83) = "FormDropDown"
    lst(84) = "Advance"
    lst(85) = "DocProperty"
    lst(87) = "OCX"
    lst(88) = "Hyperlink"
    lst(89) = "AutoTextList"
    lst(90) = "ListNum"
    lst(91) = "HTMLActiveX"
    lst(92) = "BidiOutline"
    lst(93) = "AddressBlock"
    lst(94) = "GreetingLine"
    lst(95) = "Shape"
    lst(96) = "Citation"
    lst(97) = "Bibliography"
    ListFieldType = lst
End Property
Процедуру автоматизации создания списков можно обсудить позднее если интересно!!!

Теперь достаточно легко создать функцию определения типа поля
Код:
Public Function FieldType(f As Field) As String ' Тип поля Field
    FieldType = ListFieldType(f.Type)
End Function
Теперь у нас готов класс clsField функции, методы и свойства которого мы можем применять в различных макросах, процедурах и других классах.
4. Теперь я в в шаблоне Normal модуль modField, в который буду заносить все процедуры связанные с действиями объекта Field, например процедура вывода информации о выделенных полях FieldInfo (см. Вложение)
5. Далеу все просто, назначаю кнопку для макроса FieldInfo и получаю нужный результат
Вложения
Тип файла: doc Field_1.doc (53.5 Кб, 12 просмотров)
Пименов Александр вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формат Даты katerinkaj Microsoft Office Excel 83 29.08.2011 14:05
Расчет даты (дата+цел.число) zallza Общие вопросы Delphi 8 13.05.2011 13:23
Формат даты. agregator Microsoft Office Excel 3 21.01.2011 14:55
Формат даты Iskin Microsoft Office Excel 5 16.04.2009 14:49
Формат даты. IVANSour Общие вопросы Delphi 1 18.01.2009 15:36