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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2018, 17:06   #1
Dmitry408
 
Регистрация: 04.02.2018
Сообщений: 6
По умолчанию Ошибка 5941 после записи макроса

Уважаемые Форумчане.
Создаю, с помощью запись макроса, поле (элемент управления формой)
И при повторном запуске выдается - Ошибка 5941 Запрашиваемый номер семейства не существует.
Что не так. Ведь использую запись макроса. Сам не рукоблудствую

Selection.TypeParagraph
Selection.TypeText Text:="Результат = "
Selection.FormFields.Add Range:=Selection.Range, Type:= _
wdFieldFormTextInput
Selection.MoveLeft Unit:=wdCharacter, Count:=4
With Selection.FormFields(1) Показывает ошибку на этой строке ?????
.Name = "L"
.EntryMacro = ""
.ExitMacro = ""
.Enabled = False
.OwnHelp = False
.HelpText = ""
.OwnStatus = False
.StatusText = ""
With .TextInput
.EditType Type:=wdNumberText, Default:="", Format:=""
.Width = 4
End With
End With
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="15,5"
Selection.MoveRight Unit:=wdCharacter, Count:=3
Selection.TypeText Text:="; "
Dmitry408 вне форума Ответить с цитированием
Старый 19.02.2018, 02:19   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Да, бывает, что записанный макрос не воспроизводится. Так нужно?
Код:
Sub bb()
  Selection.TypeParagraph
  Selection.TypeText Text:="Результат = "
  With Selection.FormFields.Add(Range:=Selection.Range, Type:= _
      wdFieldFormTextInput)
    .Name = "L"
    .EntryMacro = ""
    .ExitMacro = ""
    .Enabled = False
    .OwnHelp = False
    .HelpText = ""
    .OwnStatus = False
    .StatusText = ""
    With .TextInput
      .EditType Type:=wdNumberText, Default:="15,5", Format:=""
      .Width = 4
    End With
    .Range.Select
  End With
  Selection.InsertAfter Text:="; "
  Selection.Collapse wdCollapseEnd
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 19.02.2018, 10:06   #3
Dmitry408
 
Регистрация: 04.02.2018
Сообщений: 6
По умолчанию

Спасибо за ответ. Да в таком варианта все ок.
Но detault - это по умолчанию, а как сделать если результат - это периодически изменяемое значение получаемое в результате вычисления? Например c = a+b. И результат, в данном случае L = c.
И если можно еще вопрос?
Этих результатов штук 6. т.е.
L=###; M=#####,##; P=##,####; MP=######; RT=#; VL=##,##. И каждый результат сравнивается с нормой, с описанием больше, меньше, равно. И код становится очень громоздким в таком написании.
Можно его оптимизировать? И если не затруднительно покажите как?
Заранее с Уважением.
Dmitry408 вне форума Ответить с цитированием
Старый 19.02.2018, 14:38   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если нужны расчеты - переходите на Excel. Гораздо проще будет. Как вариант - в Ворде Вставка - Таблица - Таблица Excel. Или Вставка - Объект - Создание из файла...
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 19.02.2018, 18:06   #5
Dmitry408
 
Регистрация: 04.02.2018
Сообщений: 6
По умолчанию

Ох Excel. Я так тоже думал - красиво, ярко, наглядно, в общем то просто. Но..........
Вордовский документ это юридическая бумага для прокурора, а вот лист екселя не очень. И поэтому от ворда требуется максимально минимизировать человеческий фактор.
По этому и такие вопросы - надо красиво, ярко, наглядно.
Так что повторю просьбу.
Или хотя бы как впихнуть в поле периодически изменяемое значение получаемое в результате вычисления
С уважением.
Dmitry408 вне форума Ответить с цитированием
Старый 19.02.2018, 21:05   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если ориентироваться на VBA, то лучше нажатием кнопки запускать форму, в ней делать ввод, вычисления, сравнение с нормой. Когда нужный результат достигнут, вставлять значения в определенные места документа.
Можно автоматизировать документ с помощью полей, без VBA.
Что будет лучше - пока непонятно, нет ни ТЗ, ни примера.
Лист Excel можно оформить как приложение к вордовскому документу, тем более, что его можно внедрить в документ, как я уже писал.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 21.02.2018, 08:14   #7
Dmitry408
 
Регистрация: 04.02.2018
Сообщений: 6
По умолчанию

История болезни состоит из осмотров в которые надо вносить обследования - это как числовая, так и описательная составляющая, которую необходимо анализировать.
Использовать для этого привязку экселя очень неудобным.
Как работать с полями я не понял.
Использую форму с последующей вставкой в текст, но есть необходимость анализа обследования не только на данный момент, но и в динамика. И мне показалось, что для этого можно использовать поле (элемент управления формой) у которого есть имя и которое, правда не знаю еще как, можно сделать уникальным, а следовательно провести более широкие сравнения.
Конечно ворд создан не для этого. Но уж очень много плюсов.
Dmitry408 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование макроса на основе записи. Freddy19 Microsoft Office Excel 4 09.02.2013 16:23
Пропадает прокрутка после выполнения макроса rus33 Microsoft Office Excel 6 18.08.2012 08:26
Запуск макроса после изменения содержимого ячейки amd3000 Microsoft Office Excel 5 27.06.2011 16:52
ошибка 5941 Елена Гох Microsoft Office Word 5 28.01.2011 11:41
Очистка формата после удаления макроса valerij Microsoft Office Excel 2 14.06.2008 12:00