Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / В ВБ6 добавить поле в Ворде / 15 сообщений из 15, страница 1 из 1
19.07.2012, 21:31
    #37886158
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Здравствуйте, делаю так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Set ObjectWord = GetObject(, "Word.Application")
    Set ObjectOpenWord = ObjectWord.ActiveDocument
Const wdFieldFormTextInput = 70
     Const wdDateText = 2
    Dim ПолеFormTextInput As Object
                Set ПолеFormTextInput = ObjectOpenWord.FormFields.Add(Range:=ObjectOpenWord.Range, Type:= _
        wdFieldFormTextInput)
    ПолеFormTextInput.TextInput.EditType Type:=wdDateText
                ObjectOpenWord.Bookmarks(ПолеFormTextInput.Name).Delete
                'присваивание текстовому полю ..., значения ...
                ПолеFormTextInput.Result = "Формат_даты)"



на последней строке кода ошибка 4198 - Ошибка команды
как нужно??
...
Рейтинг: 0 / 0
20.07.2012, 21:16
    #37887603
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
последнюю строку сделал так:
Код: vbnet
1.
2.
  'Default - умолчание
                ПолеFormTextInput.Default = "Формат_даты)"


получил - объект не поддерживает свойство
подскажите пжл как нужно
...
Рейтинг: 0 / 0
20.07.2012, 21:29
    #37887613
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Эндрю,

ну ты же назначил полю Тип: Дата (.EditType Type:=wdDateText), значит значение поля должно быть датой, иначе ошибка.
Код: vbnet
1.
ПолеFormTextInput.Result = Date
...
Рейтинг: 0 / 0
20.07.2012, 21:36
    #37887620
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Казанский, я в шоколаде, тема коротка оказалась, всё понятно и доходчиво, спасибо!!!!!!!!
...
Рейтинг: 0 / 0
20.07.2012, 21:38
    #37887623
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
фиг там, не нахожу wdText, где оно и все остальные спрятались от меня?? жал Эф2 - не помогло, Эф1 жать боюсь
...
Рейтинг: 0 / 0
20.07.2012, 22:20
    #37887647
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
можно тупо
'
Код: vbnet
1.
2.
3.
4.
присвоть тип полю
            'ПолеFormTextInput.TextInput.EditType Type:=wdDateText
'присваивание текстовому полю ..., значения ...
                ПолеFormTextInput.Result = "Now"


но это ж не наш метод
...
Рейтинг: 0 / 0
20.07.2012, 22:40
    #37887659
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Угу, наш метод - это уже больше суток проблему создавать на пустом месте.
Запиши в Ворде магнитофоном создание нескольких полей, разного типа, со значениями по умолчанию - и все станет ясно.
...
Рейтинг: 0 / 0
20.07.2012, 22:51
    #37887666
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Казанский, Вы же знаете что не всё можно магнитофоном записать ...
...
Рейтинг: 0 / 0
20.07.2012, 23:25
    #37887688
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Знаю! Но в данном случае записывается все (Ворд 2000). Вот создание трех полей.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Sub Макрос2()
    Selection.FormFields.Add Range:=Selection.Range, Type:= _
        wdFieldFormTextInput
    Selection.TypeParagraph
    Selection.FormFields.Add Range:=Selection.Range, Type:= _
        wdFieldFormTextInput
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    With Selection.FormFields(1)
        .Name = "ТекстовоеПоле2"
        .EntryMacro = ""
        .ExitMacro = ""
        .Enabled = True
        .OwnHelp = False
        .HelpText = ""
        .OwnStatus = False
        .StatusText = ""
        With .TextInput
            .EditType Type:=wdDateText, Default:="1.1.2012", Format:=""
            .Width = 0
        End With
    End With
    Selection.EndKey Unit:=wdStory
    Selection.TypeParagraph
    Selection.FormFields.Add Range:=Selection.Range, Type:= _
        wdFieldFormTextInput
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    With Selection.FormFields(1)
        .Name = "ТекстовоеПоле3"
        .EntryMacro = ""
        .ExitMacro = ""
        .Enabled = True
        .OwnHelp = False
        .HelpText = ""
        .OwnStatus = False
        .StatusText = ""
        With .TextInput
            .EditType Type:=wdNumberText, Default:="57,00", Format:="0,00"
            .Width = 8
        End With
    End With
End Sub
...
Рейтинг: 0 / 0
21.07.2012, 08:28
    #37887769
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Казанский,
Начать запись - Текстовое поле, ну добавилось оно, а чтобы записать его параметры надо два раза щёлкнуть по нему мышью
во время записи макроса это не возможно, как Вы сделали?
есть в Эф1 варианты
Код: vbnet
1.
2.
3.
4.
5.
6.
 'тип поля Обычный текст
    Const wdRegularText = 0
    'тип поля Число
    Const wdNumberText = 1
    'тип поля Дата
    Const wdDateText = 2


А ещё есть:
Код: vbnet
1.
2.
3.
Const wdCurrentDateText = 3 
Const wdCurrentTimeText = 4 
Const wdCalculationText = 5


но получаю ошибка 4120 неверный параметр, ату его
...
Рейтинг: 0 / 0
21.07.2012, 16:29
    #37887948
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Метод FormFields.Add возвращает объект FormField. Хватай его оператором Set или With.
Вот тот же код без использования Selection
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Sub Макрос2()
Dim r As Range, f
With ActiveDocument
    Set r = .Range
    r.EndOf wdStory, wdMove
    .FormFields.Add r, wdFieldFormTextInput 'просто вставка поля
    r.EndOf wdStory, wdMove
    r.InsertParagraphAfter
    r.EndOf wdStory, wdMove
    Set f = .FormFields.Add(r, wdFieldFormTextInput) 'сохранение ссылки на объект в переменной
    f.Name = "ТекстовоеПоле2"
    f.EntryMacro = ""
    f.ExitMacro = ""
    f.Enabled = True
    f.OwnHelp = False
    f.HelpText = ""
    f.OwnStatus = False
    f.StatusText = ""
    With f.TextInput
        .EditType Type:=wdDateText, Default:="1.1.2012", Format:=""
        .Width = 0
    End With
    r.EndOf wdStory, wdMove
    r.InsertParagraphAfter
    r.EndOf wdStory, wdMove
    With .FormFields.Add(r, wdFieldFormTextInput) 'использование объекта в операторе With
        .Name = "ТекстовоеПоле3"
        .EntryMacro = ""
        .ExitMacro = ""
        .Enabled = True
        .OwnHelp = False
        .HelpText = ""
        .OwnStatus = False
        .StatusText = ""
        With .TextInput
            .EditType Type:=wdNumberText, Default:="57,00", Format:="0,00"
            .Width = 8
        End With
    End With
End With
End Sub
...
Рейтинг: 0 / 0
22.07.2012, 09:11
    #37888225
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Казанский, я спрашивал код от 20 июля 2012 г. 23:25 как Вы сделали?
Нажать начать запись - как я знаю
Нажать Текстовое поле - как я знаю, добавилось оно
Чтобы записать его параметры надо два раза щёлкнуть по нему мышью
во время записи макроса два раза щёлкнуть по нему мышью это не возможно, как Вы сделали????????????
...
Рейтинг: 0 / 0
22.07.2012, 09:57
    #37888227
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
тут ещё вылезло
'узнаю входяший макрос выделенного поля
ii = Selection.FormFields(1).EntryMacro
'номер выделенного поля
uu = Selection.Fields(1).Index
'узнаю входяший макрос выделенного поля обращаясь по его номеру, так как нужно знать входяший макрос не выделеного а следующего за выделенным полем
iii = ActiveDocument.FormFields(uu).EntryMacro
швах
...
Рейтинг: 0 / 0
22.07.2012, 10:01
    #37888229
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Тогда я нажал Shift+влево
Код: vbnet
1.
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend

и нажал кнопку "свойства" на панели "формы".
Оказывается, нажимать Shift+влево необязательно, можно сразу нажимать кнопку "свойства", Ворд понимает :)
Код: vbnet
1.
2.
3.
4.
5.
6.
    Selection.FormFields.Add Range:=Selection.Range, Type:= _
        wdFieldFormTextInput
    Selection.PreviousField.Select
    With Selection.FormFields(1)
        .Name = "ТекстовоеПоле2"
'и т.д.
...
Рейтинг: 0 / 0
22.07.2012, 13:53
    #37888300
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ВБ6 добавить поле в Ворде
Казанский,
нажал кнопку "свойства" на панели "формы
Спасибо, не знал, избавляет от множества вопросов
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / В ВБ6 добавить поле в Ворде / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]