roslova 0 / 0 / 0 Регистрация: 11.12.2018 Сообщений: 3 |
||||
1 |
||||
Word 11.12.2018, 21:03. Показов 25742. Ответов 4 Метки vba, макрос (Все метки)
Всем привет. я не программист и у меня такая проблема: писала довольно простой макрос для создания формулы с автоматической нумерацией в ворде (чтобы формула не «съезжала» влево). вроде создаю сам макрос, но когда хочу добавить его на панель быстрого доступа, вылезает ошибка: «ошибка 5941: «запрашиваемый номер семейства не существует». текст в VisualB такой:
и я понятия не имею, что надо исправить…
__________________
0 |
oh my god 1454 / 793 / 161 Регистрация: 05.01.2016 Сообщений: 2,307 Записей в блоге: 8 |
|
11.12.2018, 21:08 |
2 |
судя по всему вы какой -то шаблон пытаетесь запустить
0 |
74 / 7 / 2 Регистрация: 15.11.2018 Сообщений: 72 |
|
11.12.2018, 21:13 |
3 |
https://support.microsoft.com
0 |
oh my god 1454 / 793 / 161 Регистрация: 05.01.2016 Сообщений: 2,307 Записей в блоге: 8 |
|
11.12.2018, 21:16 |
4 |
Видимый имеет значение Ложь. защиту от дурака надо убрать ))
0 |
0 / 0 / 0 Регистрация: 11.12.2018 Сообщений: 3 |
|
12.12.2018, 08:52 [ТС] |
5 |
вот по этому видео пыталась сделать нумерацию. не вышло. сама формула в уравнениях имеется, а в маркрос ее не удается сделать. спасибо всем за наводки по решению проблемы
0 |
Проблема
При попытке использовать Microsoft Visual Basic for Applications (VBA) для изменения свойств документа появляется одно из приведенных ниже сообщений об ошибке.
Ошибка при выполнении ‘4248’:
Команда недоступна, так как нет открытых документов
Ошибка при выполнении ‘4605’:
Метод или свойство недоступны, поскольку окно документа не активно
или
Ошибка при выполнении ‘5941’:
Запрашиваемый номер семейства не существует
Причина
Проблема возникает, когда нет открытых документов или не открыт документ, на который сделана ссылка. В программе Word предусмотрено изменение свойств только открытых документов.
Примечание. Такие сообщения об ошибках могут появиться также в том случае, если открыт документ, у которого свойство Видимый имеет значение Ложь.
Временное решение
Корпорация Microsoft предлагает примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их корректной работы в конкретных случаях и в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования, а также необходимых средств разработки и отладки. Специалисты служб технической поддержки Microsoft могут пояснить назначение тех или иных конструкций кода в конкретном примере, но модификация примеров и их адаптация к задачам разработчика не поддерживается. Если вам требуется дополнительная консультация по вопросам программирования, вы можете обратиться в службу консалтинга Microsoft или связаться с сертифицированными партнерами компании Microsoft. Дополнительную информацию о партнерах корпорации Microsoft можно найти в Интернете по следующему адресу:
http://www.microsoft.com/partner/referral/ За дополнительной информацией обратитесь к веб-узле корпорации Microsoft по адресу:
http://support.microsoft.com/default.aspx?scid=fh;RU;CNTACTMSЗа дополнительной информацией об использовании приведенных в этой статье примеров обратитесь к следующей статье Microsoft Knowledge Base:
290140 How to Run Sample Code from Knowledge Ниже приведен пример макроса на языке Visual Basic for Applications для изменения значения поля Заголовок в диалоговом окне Свойства. Пример содержит специальный программный код для перехвата ошибок на случай, если нет открытых документов, и вывода соответствующего сообщения.
Sub ChangeDocProperties()On Error GoTo ErrHandler
ActiveDocument.BuiltInDocumentProperties("Title") = "My Title"
Exit SubErrHandler:
If Err <> 0 Then
'
' Display an error message.
'
MsgBox Err.Description
'
' Clear the error.
'
Err.Clear
Resume NextEnd If
End Sub
Приведенный ниже программный код предусмотрен для выполнения следующих целей.
-
Перехват ошибок, если нет открытых документов
и
-
Создание нового документа при перехвате ошибки
и
-
Возобновление нормальной работы в строке, вызвавшей появление ошибки
Sub ChangeDocProperties()On Error GoTo ErrHandler
ActiveDocument.BuiltInDocumentProperties("Title") = "My Title"
Exit SubErrHandler:
If Err <> 0 Then
'
' Add a document.
'
Documents.Add
'
' Clear the error.
'
Err.Clear
'
' Run the code that caused the error.
'
ResumeEnd If
End Sub
Ссылки
Для получения помощи по работе с Visual Basic обратитесь к следующей статье Microsoft Knowledge Base:
305326 Programming Resources for Visual Basic for Applications
Нужна дополнительная помощь?
ddmitriy Пользователь Сообщений: 5 |
#1 21.06.2017 17:17:09 Добрый день.
Ошибка указывает на строку.
Закладки проверил, всё в норме. Подскажите что ещё может быть не так. Спасибо. |
||||
The_Prist Пользователь Сообщений: 13962 Профессиональная разработка приложений для MS Office |
Ответ один — его действительно не существует. Если Вы в одну и ту же закладку в цикле что-то пытаетесь записать, то это вполне возможно, т.к. после первой записи закладка как правило удаляется. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#3 21.06.2017 17:34:49 покажите весь код
|
|||
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#4 21.06.2017 17:49:06
——
|
|||
The_Prist Пользователь Сообщений: 13962 Профессиональная разработка приложений для MS Office |
Дмитрий, в данном случае активация избыточна, т.к. идет обращение к закладкам конкретного документа: WD. Поэтому озвученная ошибка не может возникнуть по этой причине. Если бы активен был другой документ, то была бы другая ошибка. Изменено: The_Prist — 21.06.2017 17:50:14 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#6 21.06.2017 17:51:01 The_Prist, Поэтому и прошу старттопика показать весь кусок кода. Что там у него за WD только он знает
|
|
ddmitriy Пользователь Сообщений: 5 |
#7 21.06.2017 17:54:07 R Dmitry? не помогло.
|
|
The_Prist Пользователь Сообщений: 13962 Профессиональная разработка приложений для MS Office |
#8 21.06.2017 17:54:37
если кусок — да, не удалится. Но у ТС-а же не так Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Формулировка задачи:
Здравствуйте. Пишу макрос для ворда, надо перебирать символы. При отладке вылетает «Ошибка № 5941 Запрашиваемый номер семейства не существует» на этой строке кода (когда пытаюсь извлечь символ номер i):
Весь код:
В чем проблема?
Код к задаче: «Ошибка № 5941 Запрашиваемый номер семейства не существует — MS Word»
textual
Sub ToCalibri1() Selection.HomeKey wdStory With Selection.Find .ClearFormatting .Replacement.Text = "" .Text = "[}]*[{]" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With While Selection.Find.Execute ActiveDocument.Range(Selection.Start + 1, Selection.End - 1).Font.Name = "Calibri" Wend End Sub
Полезно ли:
6 голосов , оценка 3.667 из 5
Как исправить время выполнения Ошибка 5941 Ошибка Microsoft Word 5941
В этой статье представлена ошибка с номером Ошибка 5941, известная как Ошибка Microsoft Word 5941, описанная как Ошибка 5941: Возникла ошибка в приложении Microsoft Word. Приложение будет закрыто. Приносим свои извинения за неудобства.
О программе Runtime Ошибка 5941
Время выполнения Ошибка 5941 происходит, когда Microsoft Word дает сбой или падает во время запуска, отсюда и название. Это не обязательно означает, что код был каким-то образом поврежден, просто он не сработал во время выполнения. Такая ошибка появляется на экране в виде раздражающего уведомления, если ее не устранить. Вот симптомы, причины и способы устранения проблемы.
Определения (Бета)
Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!
- Microsoft word — по вопросам программирования, связанным с редактором Microsoft Word.
Симптомы Ошибка 5941 — Ошибка Microsoft Word 5941
Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.
Возможны случаи удаления файлов или появления новых файлов. Хотя этот симптом в основном связан с заражением вирусом, его можно отнести к симптомам ошибки времени выполнения, поскольку заражение вирусом является одной из причин ошибки времени выполнения. Пользователь также может столкнуться с внезапным падением скорости интернет-соединения, но, опять же, это не всегда так.
(Только для примера)
Причины Ошибка Microsoft Word 5941 — Ошибка 5941
При разработке программного обеспечения программисты составляют код, предвидя возникновение ошибок. Однако идеальных проектов не бывает, поскольку ошибки можно ожидать даже при самом лучшем дизайне программы. Глюки могут произойти во время выполнения программы, если определенная ошибка не была обнаружена и устранена во время проектирования и тестирования.
Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.
Методы исправления
Ошибки времени выполнения могут быть раздражающими и постоянными, но это не совсем безнадежно, существует возможность ремонта. Вот способы сделать это.
Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.
Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.
Метод 1 — Закройте конфликтующие программы
Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.
- Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
- Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
- Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
- Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.
Метод 2 — Обновите / переустановите конфликтующие программы
Использование панели управления
- В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
- В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
- Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
- В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
- Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.
Использование других методов
- В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
- В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
- Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
- Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.
Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.
Заражение вирусом, вызывающее ошибку выполнения на вашем компьютере, необходимо немедленно предотвратить, поместить в карантин или удалить. Убедитесь, что вы обновили свою антивирусную программу и выполнили тщательное сканирование компьютера или запустите Центр обновления Windows, чтобы получить последние определения вирусов и исправить их.
Метод 4 — Переустановите библиотеки времени выполнения
Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.
- Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
- Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
- Загрузите последний распространяемый пакет от Microsoft и установите его.
Метод 5 — Запустить очистку диска
Вы также можете столкнуться с ошибкой выполнения из-за очень нехватки свободного места на вашем компьютере.
- Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
- Вы также можете очистить кеш и перезагрузить компьютер.
- Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C
- Щелкните «Свойства», а затем — «Очистка диска».
Метод 6 — Переустановите графический драйвер
Если ошибка связана с плохим графическим драйвером, вы можете сделать следующее:
- Откройте диспетчер устройств и найдите драйвер видеокарты.
- Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.
Метод 7 — Ошибка выполнения, связанная с IE
Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:
- Сбросьте настройки браузера.
- В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
- Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
- Отключить отладку скриптов и уведомления об ошибках.
- В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
- Установите флажок в переключателе.
- Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.
Если эти быстрые исправления не работают, вы всегда можете сделать резервную копию файлов и запустить восстановление на вашем компьютере. Однако вы можете сделать это позже, когда перечисленные здесь решения не сработают.
Другие языки:
How to fix Error 5941 (Microsoft Word Error 5941) — Error 5941: Microsoft Word has encountered a problem and needs to close. We are sorry for the inconvenience.
Wie beheben Fehler 5941 (Microsoft Word-Fehler 5941) — Fehler 5941: Microsoft Word hat ein Problem festgestellt und muss geschlossen werden. Wir entschuldigen uns für die Unannehmlichkeiten.
Come fissare Errore 5941 (Errore 5941 di Microsoft Word) — Errore 5941: Microsoft Word ha riscontrato un problema e deve essere chiuso. Ci scusiamo per l’inconveniente.
Hoe maak je Fout 5941 (Microsoft Word-fout 5941) — Fout 5941: Microsoft Word heeft een probleem ondervonden en moet worden afgesloten. Excuses voor het ongemak.
Comment réparer Erreur 5941 (Erreur Microsoft Word 5941) — Erreur 5941 : Microsoft Word a rencontré un problème et doit se fermer. Nous sommes désolés du dérangement.
어떻게 고치는 지 오류 5941 (마이크로소프트 워드 오류 5941) — 오류 5941: Microsoft Word에 문제가 발생해 닫아야 합니다. 불편을 끼쳐드려 죄송합니다.
Como corrigir o Erro 5941 (Erro 5941 do Microsoft Word) — Erro 5941: O Microsoft Word encontrou um problema e precisa fechar. Lamentamos o inconveniente.
Hur man åtgärdar Fel 5941 (Microsoft Word-fel 5941) — Fel 5941: Microsoft Word har stött på ett problem och måste avslutas. Vi är ledsna för besväret.
Jak naprawić Błąd 5941 (Błąd Microsoft Word 5941) — Błąd 5941: Microsoft Word napotkał problem i musi zostać zamknięty. Przepraszamy za niedogodności.
Cómo arreglar Error 5941 (Error 5941 de Microsoft Word) — Error 5941: Microsoft Word ha detectado un problema y debe cerrarse. Lamentamos las molestias.
Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.
Следуйте за нами:
Последнее обновление:
09/11/22 08:52 : Пользователь Windows 10 проголосовал за то, что метод восстановления 1 работает для него.
Рекомендуемый инструмент для ремонта:
Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.
ШАГ 1:
Нажмите здесь, чтобы скачать и установите средство восстановления Windows.
ШАГ 2:
Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.
ШАГ 3:
Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.
СКАЧАТЬ СЕЙЧАС
Совместимость
Требования
1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.
ID статьи: ACX08352RU
Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000
Совет по увеличению скорости #26
Изменение расположения папки «Мои документы»:
Освободите место на системном разделе диска, переместив папку «Мои документы» в другой раздел. Это ускорит работу вашего компьютера, предоставив ему больше места для дыхания. Это также позволит упростить резервное копирование и восстановление данных в случае сбоя системы Windows.
Нажмите здесь, чтобы узнать о другом способе ускорения работы ПК под управлением Windows
Объединение данных из нескольких файлов Word в Excel |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
- Remove From My Forums
-
Question
-
I have looked at some of the explanations and suggested cures but they are not simple enough for me. I am trying to make a macro which will insert my address etc on a blank document. I have the address layout stored in Quick Parts, so having
brought up a blank normal document on screen, I usually go to Quick Parts and insert the block and then back to Home before proceeding. I wanted to have a Quick Access macro which would do that. So I am bringing up the blank, going into record
Macro and assigning to button and recording then to Quick Parts, selecting the address, Insert, and then back to Home, before Stop Recording. However, when I try to run the macro, I get the 5941 message each and every time. On debug
the whole macro is highlighted.I did make a successful macro for PrintPage which was fine and I use it all the time. I have Windows 7 64 bit and Word 2010 Office and Student.
Answers
-
Sounds right. Like this?
Sub Macro1()
‘
‘ Macro1 Macro
‘
‘Templates.LoadBuildingBlocks
Application.Templates( _
«C:UsersJosephineAppDataRoamingMicrosoftDocument Building Blocks103314Building Blocks.dotx» _
).BuildingBlockEntries(«HomeAddress»).Insert Where:=Selection.Range, _
RichText:=True
End Sub
Enjoy,
Tony
www.WordArticles.com- Marked as answer by
Monday, July 18, 2011 6:52 AM
- Marked as answer by
-
Hi «Boots»
I was going to suggest the same thing as Tony and am as surprised as he that it didn’t work. The next step would be to narrow down whether the «missing member» of the collection refers to the template or to the Building Block entry. So let’s break the recorded
macro down into smaller pieces and see exactly where the problem is coming from. Try something like this and tell us which line gets highlighted:Sub Macro1() Dim tmpl as Word.Template Application.Templates.LoadBuildingBlocks Set tmpl = Application.Templates( _ "C:UsersJosephineAppDataRoamingMicrosoftDocument Building Blocks103314Building Blocks.dotx") tmpl.BuildingBlockEntries("HomeAddress").Insert Where:=Selection.Range, _ RichText:=True End Sub
Cindy Meister, VSTO/Word MVP
- Marked as answer by
Calvin_Gao
Monday, July 18, 2011 6:51 AM
- Marked as answer by
-
Hi «Boots»
I’m amazed that just pulling the stuff apart worked. Word never ceases to amaze me…
In order to give a macro a different name, simply change what appears after the word «Sub». To name the macro InsertMyAddress, for example, change the line
Sub Macro1()
to
Sub InsertMyAddress()
To assign this to your Quick Access Toolbar (QAT), click on the arrow that points down at the very end of the QAT. Choose «More commands…» This should open the File/Options dialog box at the correct «tab». From the dropdown list at the top left choose
«Macros». Click on the macro, then click the button to ADD it to the list on the right. If you want to see a different icon, click on the macro in the list on the right, then click «Modify». There you can choose a picture and change the «Display name».(I’m looking at Word 2007, where the names of things are a bit different. That’s why I’m not giving you the exact menu names — I don’t want to confuse you!)
Cindy Meister, VSTO/Word MVP
- Marked as answer by
Calvin_Gao
Monday, July 18, 2011 6:51 AM
- Marked as answer by
16.11.09 — 21:07
Платформа пишет такую ошибку:
Ошибка при вызове метода контекста (Item): Произошла исключительная ситуация (Microsoft Word): Запрашиваемый номер семейства не существует.
Макет=ПолучитьМакет(«Макет»);
MSWord = Макет.Получить();
Попытка
Шаблон = MSWord.Application.Documents(1);
Шаблон.Activate();
…
Таблица = Шаблон.Tables.Item(1);
Эта обработка на моем компьютере отрабатывает. По отладчику посмотрел на другом компьютере (где не работает): количество таблиц равно нулю. На всякий случай нарисовал прямо на данном компьютере еще одну таблицу в ActiveDocument. И все равно количество таблицу в документе равно нулю.
Что может быть не так?
1 — 16.11.09 — 21:07
вылетает на этом месте:
Таблица = Шаблон.Tables.Item(1);
2 — 16.11.09 — 21:15
видимо шаблон переаполняется
3 — 16.11.09 — 21:23
а может нет там в этой коллекции элементов? Посмотри Шаблон.Tables.Count
4 — 16.11.09 — 21:24
всмысле шаблон перезаполняется?
так я и смотрю Шаблон.Tables.Count()
Он равен нулю.
5 — 16.11.09 — 21:27
MSWord.Application.Documents().Count() — сколько?
6 — 16.11.09 — 21:27
причем я сделал еще так: взял скопировал свой шаблон в doc файл. скопировал его на тот компьютер. загрузил в activedocument. та же ерунда.
7 — 16.11.09 — 21:29
MSWord.Application.Documents().Count() = 1
8 — 16.11.09 — 21:30
причем у меня что закомментировано тоже не проходит, а проходит иначе
//Шаблон.Fields.item(1).Result.Text = Формат(Дата, «ДЛФ=D»)+» г.»;
Замена = Шаблон.Content.Find;
Замена.Execute(«[Дата]», Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(Дата, «ДЛФ=D»)+» г.»);
9 — 16.11.09 — 21:35
Шаблон = MSWord.Application.Documents(1);
Шаблон.Tables.Count()
—
что говорит?
10 — 16.11.09 — 21:44
говорит 0
11 — 16.11.09 — 21:45
а у меня говорит 2 (сколько и есть на самом деле)
12 — 16.11.09 — 21:46
ЗЫ: базы одинаковые, но тестируются на разных машинах.
13 — 16.11.09 — 21:52
версии МС офиса одинаковые?
14 — 16.11.09 — 21:53
и там и там 2007. СОхраняю для надежности в 2003.
15 — 16.11.09 — 21:57
значит не тот макет
16 — 16.11.09 — 21:58
всмысле не тот макет?
17 — 16.11.09 — 22:00
попробовал иначе: прямо на том компьютере в конфигураторе создал макет (activedocument). Нарисовал 2 таблицы.Проверил количество таблиц при выводе: оно опять равно нулю.
18 — 16.11.09 — 22:08
19 — 16.11.09 — 22:09
визибле=-1
20 — 16.11.09 — 22:14
+ выкинуть попытку
21 — 16.11.09 — 22:19
это что за ссылка?
Что попробовать?
Шаблон.Visible = -1;???
22 — 16.11.09 — 22:21
23 — 16.11.09 — 22:28
блин.
Система в настоящее время не доступна. Пожалуйста попытайтесь позже или свяжитесь с службой поддержки, если Вам необходима срочная помощь.http://support.microsoft.com/contactus/?ws=support
24 — 16.11.09 — 22:37
как всегда майкрософт подводит ((
Falex
25 — 17.11.09 — 16:18
не работает (
Делаю выгрузку из datagridview
в документ Word
с помощью этого кода:
Делаю объединение строк в первой и во второй колонке. Если убрать объединение ячеек в первой колонке, то всё работает как надо. Во второй колонке объединение происходит нормально, а на первой происходит ошибка — Запрашиваемый номер семейства не существует. По логике всё должно работать, но чё то не могу додумать что не так
На третьем цикле происходит ошибка
Маленький пример
Заголовок таблицы тот же. В итоге результат тот же, при объединении ячеек в соседней колонке так же пишет — запрашиваемый номер семейства не существует.
Почему так, не пойму
1 ответ 1
Объединяйте ячейки используя Cell.Merge :
Вы пытаетесь выделять диапазон не в таблице, а в документе Word и объединять все ячейки в нем. Ошибка возникает при вызове метода Merge . Видимо диапазон некорректно отрабатывает.
Немного о примере
Ошибка происходит при объединении ячеек. Поэтому первый шаг при построении примера выполнить эту операцию отдельно от остальной логики. Для этого создадим документ в котором будет таблица с одной ячейкой и попробуем объединить:
Этот код приведет к ошибке и мы уже получили легковоспроизводимый пример который можно запустить в консольном приложении. Но его можно улучшить. Для этого можно уточнить какое именно свойство/метод вызывает исключение. Сделать это можно прочитав трассировку стека по ошибке:
Видно, что ошибка происходит в методе Merge . Выделим это в примере:
Это уже будет хороший пример, но при желании и его можно улучшить. Например, в нем мы обращаемся к внешнему документу Word. Его легко создать, но будет еще проще если он будет создаваться в коде:
С таким примером Вы получите ответ гораздо быстрее.
Содержание
Функционирование
MS Word — текстовый процессор. Обычно входит в состав пакета офисных программ MS Office. Система АвтоПарк поддерживает формирование отчетных форм с использованием MS Word. Обратите внимание: версия MS Word, пригодная для использования в Системе АвтоПарк — не ниже MS Word 2000.
Данные в Word АвтоПарк передаёт путём создания в документе набора переменных и присваивания им значений. Для управления отображением данных в шаблоне документа используются поля. Более подробно о том, что такое поля и переменные документа, смотрите в справочной системе Word. Начальные сведения содержатся в статьях «О полях», «Коды полей: DOCVARIABLE».
Разрабатываемые и поддерживаемые разработчиком шаблоны находятся в каталогах:
- AutoPark$_LIBDOT — системные шаблоны
- AutoParkDOT — локальные шаблоны
Именование переменных документа
Основные принципы на примерах.
- Staff.TSN, Post.Name — переменные документа имеют названия в соответствии с наименованием полей файлов базы данных. Список файлов и их полей открывается в АвтоПарке по комбинации клавиш Ctrl+F10.
- Officer.Sort.Name — переменные могут содержать в наименовании, как наименование основного файла, так и файла — справочника (Поле Name из записи файла Sort, соответствующей записи файла Officer).
- OrderL[2].Sort.Name — в случае, когда подготавливаются переменные по нескольким записям в файле БД, после имени файла добавляется индекс (наименование сектора, соответствующего второй строке приказа). Важно знать: строки нумеруются, начиная с 0.
- Staff.BegDate.Month, Man.Name.Short — в переменной содержится модифицированное значение поля (только месяц из даты приёма, ФИО с инициалами вместо имени и отчества).
- OwnFirm.RegName, OwnFirm.AcntName — всегда создаётся набор переменных с префиксом OwnFirm, содержащих различные данные о Вашем предприятии (Наименование предприятия, ФИО главного бухгалтера).
- Math.BalCost — если значение переменной не берётся из какого-то конкретного поля, а вычисляется, то наименование передаёт смысл значения (балансовая стоимость объекта).
Многострочные части
Если отчётная форма содержит одну или несколько многострочных частей, следует учитывать следующие особенности: Подлежащая тиражированию часть документа должна быть помечена закладкой. Имя закладки определено в программе подготовки документа. В наименовании переменных при тиражировании индексом строки считается первый встречающийся нулевой индекс в наименовании переменных. При добавлении каждой новой строки индекс увеличивается на единицу.
Если тиражируемая часть является набором строк таблицы Word, закладкой должны быть помечены и символы окончания строки (в режиме отображения непечатных символов выглядит как ¤).
Если предусмотренную шаблоном таблицу требуется продублировать или разбить на две (например, часть столбцов перенести на другую страницу), для каждой из таблиц должна быть установлена закладка. Дополнительным закладкам следует дать имя основной закладки с добавлением «_1» или «_2».
Изображения
Если в отчётной форме предусмотрена вставка изображений (например, фотография работника), то место для вставки изображения отмечается закладкой. В случае, если одно изображение требуется вставить в несколько мест документа, то дополнительным закладкам следует дать имя основной закладки с добавлением цифры от 1 до 9 (например, если АвтоПарк выводит фото работника в шаблон в закладку «Face», то добавление закладок «Face1», «Face7» приведёт к выводу такого же фото и в места, отмеченные этими закладками).
Режимы работы с Word
Разные режимы применяются на разных этапах работы с шаблонами. Изменяется режим через пункт меню «Сервис — Администратор — Настройка системного окружения — . для работы с шаблонами MS Word — Разработка шаблонов CtrlW». Изменение режима доступно только АДМИНИСТРАТОРУ.
Существует три режима работы с Word:
Обычный режим
Используется для подготовки документов на основе шаблона. При старте АвтоПарка режим всегда обычный.
При создании отчётной формы АвтоПарк выполняет следующие операции: создаёт документ Word на основе соответствующего шаблона, создаёт в документе необходимые переменные, присваивает им значения, обновляет все поля документа, отправляет документ на печать либо (в зависимости от выбора пользователя) сохраняет его и открывает для редактирования.
Также в некоторых документах производится тиражирование многострочной части и вставка графических изображений.
Режим разработки шаблона
Используется для облегчения модификации пользовательских шаблонов. Отличается от обычного тем, что создаёт резервную копию шаблона, открывает сам шаблон, а не документ на его основе, выгружает все переменные, а не только необходимые, а также не тиражирует многострочные части и не вставляет графические изображения.
Открытый шаблон содержит все переменные, подготавливаемые АвтоПарком. Для того, чтобы определить наименование именно той переменной, которую Вы желали бы вывести в отчётной форме, прежде всего стоит посмотреть в шаблонах, подобных разрабатываемому. Кроме того, во время разработки шаблона можно выбрать режим с выгрузкой полного списка переменных этого шаблона. Если переменной, которую Вы желали бы вывести в отчётной форме, нет в шаблоне, следует оформить ТТ на формирование такой переменной.
Особенности
- В режиме разработки графические изображения в шаблон не выгружаются и, соответственно, не видны.
Публикация шаблона
Используется для окончательного оформления пользовательского шаблона, подготовленного в режиме разработки или другим способом. Внимание! Работа в «обычном режиме» (печать на принтер, печать в файл) с неопубликованным пользовательским шаблоном невозможна!
Сразу после установки режима предлагается выбрать шаблон для публикации.
С выбранного шаблона делается резервная копия, затем удаляются неиспользуемые в шаблоне переменные, значения используемых заменяются на символы «X» и «0», после чего шаблон сохраняется, а режим работы с Word возвращается в прежнее значение.
Повторно опубликовать шаблон безвредно.
Как заказать новый Word-отчёт
- В случае если Вам необходим какой-либо отчёт, его необходимо заказать, используя стандартную форму оформления технического требования.
- Если по каким-либо причинам Вам необходимо, чтобы отчёт готовился с использованием MS Word, следует отразить данный факт в ТТ. В ТТ следует отразить, какие данные должны быть выгружены в Word, а также приложить к нему проект шаблона отчёта, выполненный в виде шаблона Word.
Создание пользовательского шаблона
Существует возможность пользователю самостоятельно дорабатывать и изменять готовую отчетную форму MS-Word. При использовании такого шаблона АвтоПарк подготавливает набор переменных документа в обычном режиме, но формирование выходной формы происходит на основе пользовательского шаблона. Это позволяет использовать нестандартные формы вместо подготавливаемых АвтоПарком.
Может быть две причины самостоятельной модификации выходных форм:
- Данная форма изначально изготавливается самим пользователем (к этому относятся, например, шаблоны текстов договоров, дополнительных соглашений и т.п.). Согласно п. 2.9 договора на сопровождение системы АвтоПарк: «При реализации готовой настраиваемой или свободной выходной формы, Исполнитель, кроме изменений прикладного программного обеспечения, реализует также образец выходной формы стандартными программными средствами. Дальнейшие технические требования по изменению выходной формы, реализованной как готовая настраиваемая или свободная, могут выдаваться Заказчиком только в части факторов, которые определяются программным обеспечением Системы, в соответствии с положениями пункта 1.2.12.4 настоящего договора. Изменения таких выходных форм в части факторов, которые определяются стандартными программными средствами, в стоимость настоящего договора не входят». Это означает, что пользователи самостоятельно разрабатывают собственные формы на основании предоставленных образцов, но в случае, например, изменения внутренней структуры формы, разработчики окажут помощь в поддержке работоспособности таких форм.
- Пользователь самостоятельно вносит изменения в стандартный вид выходной формы. Чаще всего такие формы изготавливаются из-за того, что на предприятии принят вид формы, либо не отвечающий требованиям нормативных документов, либо содержащий лишнюю и ненужную в этих формах информацию (например, если на Вашем предприятии используется форма приказа о приёме на работу, отличная от стандартной формы T-1).
Следует осознавать, что в случае изменения состава стандартно подготавливаемых переменных или необходимого вида отчётной формы может возникать необходимость вносить изменения в пользовательский шаблон. В случае использования собственного шаблона это придётся делать самостоятельно, причем «внезапно». Исходя из этого, изготавливать собственные версии стандартных выходных форм следует очень аккуратно.
Некоторые особенности использования MS Word
Для корректной автоматической нумерации страниц в формах, при печати необходимо выставить «галочку» в меню «Сервис» — «Параметры», закладка «Печать», группа «Режим», пункт «обновлять поля».
Известные проблемы
При выгрузке в Word возникает ошибка «Запрашиваемый номер семейства не существует»
- Обычно это возникает в случае, когда до выполнения операции на компьютере случилось ненормальное завершение MS Word (Word «вылетел» в процессе работы, либо выгрузка из АвтоПарк была прервана пользователем). Исправляется перезагрузкой компьютера.
- В случае, когда ошибка проявляется всегда и перезагрузка не помогает, проблема в самом MS Word. Исправление: если MS Office версии 2002 и 2003 — может помочь установка Service Pack 3, иначе переустановка MS Office.
При выгрузке в Word возникает ошибка «Приложению Word не удалось запустить конвертер mswrd632»
- Следует выполнить рекомендации корпорации Microsoft, изложенные в этой статье.
При выгрузке в Word появляется ошибка «Вызов был отклонен»
- В уже открытом у вас Word был активный диалог. Закрыть диалог в Word и попробовать снова.
- Не хватило системных ресурсов (много уже открытых Excel и Word). Позакрывать и повторить попытку.
- Сбой в Windows или Word. Перезагрузить компьютер, если не помогает — обратиться к администратору.
При выгрузке в Word появляется ошибка «Неверно указана единица измерения»
Возникает если в региональных настройках изменить разделитель целой и дробной части с запятой на точку.
Для устранения ошибки: открываем Microsoft Office Word далее Сервис — Настройка — Команды — Упорядочить команды — выбрать Панель инструментов — в ней Форматирование — в Элементах встать на Межстрочный интервал — Удалить — Закрыть — Закрыть — закрыть Microsoft Office Word.
Собственно есть документ Word, в котором записан некоторый текст и несколько таблиц. Требуется изменить стили текста и таблиц. И если изменением текста всё понятно и вполне даже получается, то вот с таблицами полный ноль.
Пытаюсь получить таблицу так:
Но выдаёт ошибку:
System.Runtime.InteropServices.COMException: «Запрашиваемый номер семейства не существует.»
- Вопрос задан более года назад
- 104 просмотра
совет — включите запись макросов, проделайте манипуляции с таблицей, те самые что хотите автоматизировать, завершите запись, откройте VBA и переведите с VB на шарп, то что будет в записи
довольно универсальный рецепт, при работе с офисом
ps правда перевод не всегда абсолютно очевиден.. но можно достаточно быстро освоится
ddmitriy Пользователь Сообщений: 5 |
#1 21.06.2017 17:17:09 Добрый день.
Ошибка указывает на строку.
Закладки проверил, всё в норме. Подскажите что ещё может быть не так. Спасибо. |
||||
The_Prist Пользователь Сообщений: 13999 Профессиональная разработка приложений для MS Office |
Ответ один — его действительно не существует. Если Вы в одну и ту же закладку в цикле что-то пытаетесь записать, то это вполне возможно, т.к. после первой записи закладка как правило удаляется. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#3 21.06.2017 17:34:49 покажите весь код
|
|||
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#4 21.06.2017 17:49:06
——
|
|||
The_Prist Пользователь Сообщений: 13999 Профессиональная разработка приложений для MS Office |
Дмитрий, в данном случае активация избыточна, т.к. идет обращение к закладкам конкретного документа: WD. Поэтому озвученная ошибка не может возникнуть по этой причине. Если бы активен был другой документ, то была бы другая ошибка. Изменено: The_Prist — 21.06.2017 17:50:14 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#6 21.06.2017 17:51:01 The_Prist, Поэтому и прошу старттопика показать весь кусок кода. Что там у него за WD только он знает
|
|
ddmitriy Пользователь Сообщений: 5 |
#7 21.06.2017 17:54:07 R Dmitry? не помогло.
|
|
The_Prist Пользователь Сообщений: 13999 Профессиональная разработка приложений для MS Office |
#8 21.06.2017 17:54:37
если кусок — да, не удалится. Но у ТС-а же не так Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Делаю выгрузку из datagridview
в документ Word
с помощью этого кода:
string num = null;
int y = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
tbl.Rows.Add(ref missing);//Добавляем в таблицу строку.
if (num == null)
{
wordDocument.Range(tbl.Cell(i + 2, 2).Range.Start, tbl.Cell(i + 2, 2).Range.End).Text = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
num = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
}
else
{
if (num == dataGridView1.Rows[i].Cells["Column2"].Value.ToString())
{
y++;
//тут он не может найди запрашиваемый номер семейства
wordDocument.Range(tbl.Cell(i + 2 - y, 1).Range.Start, tbl.Cell(i + 2, 1).Range.End).Cells.Merge();
//объединение второй колонки
wordDocument.Range(tbl.Cell(i + 2 - y, 2).Range.Start, tbl.Cell(i + 2, 2).Range.End).Cells.Merge();
}
else
{//если нет, то просто заполняем данными
wordDocument.Range(tbl.Cell(i + 2, 1).Range.Start, tbl.Cell(i + 2, 1).Range.End).Text = dataGridView1.Rows[i].Cells["Column1"].Value.ToString();
wordDocument.Range(tbl.Cell(i + 2, 2).Range.Start, tbl.Cell(i + 2, 2).Range.End).Text = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
num = dataGridView1.Rows[i].Cells["Column2"].Value.ToString();
y = 0;
}
}
//заполняем остальные колонки данными
wordDocument.Range(tbl.Cell(i + 2, 3).Range.Start, tbl.Cell(i + 2, 3).Range.End).Text = dataGridView1.Rows[i].Cells["Column3"].Value.ToString();
wordDocument.Range(tbl.Cell(i + 2, 4).Range.Start, tbl.Cell(i + 2, 4).Range.End).Text = dataGridView1.Rows[i].Cells["Column4"].Value.ToString();
wordDocument.Range(tbl.Cell(i + 2, 5).Range.Start, tbl.Cell(i + 2, 5).Range.End).Text = stepennn.ShowSubText(dataGridView1.Rows[i].Cells["Column5"].Value.ToString(), dataGridView1.Rows[i].Cells["Column6"].Value.ToString());
wordDocument.Range(tbl.Cell(i + 2, 6).Range.Start, tbl.Cell(i + 2, 6).Range.End).Text = dataGridView1.Rows[i].Cells["Column6"].Value.ToString();
wordDocument.Range(tbl.Cell(i + 2, 7).Range.Start, tbl.Cell(i + 2, 7).Range.End).Text = dataGridView1.Rows[i].Cells["Column7"].Value.ToString();
}
Делаю объединение строк в первой и во второй колонке. Если убрать объединение ячеек в первой колонке, то всё работает как надо. Во второй колонке объединение происходит нормально, а на первой происходит ошибка — Запрашиваемый номер семейства не существует. По логике всё должно работать, но чё то не могу додумать что не так
На третьем цикле происходит ошибка
Маленький пример
private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
var doc =word.Documents.Open( @"C:\111.docx", ReadOnly: true);
word.Visible = true;
object missing = Type.Missing;
Microsoft.Office.Interop.Word.Table tbl = word.ActiveDocument.Tables[1];
tbl.Borders.Enable = 1;
tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
tbl.Rows.Add(ref missing);//Добавляем в таблицу строку
doc.Range(tbl.Cell(2, 2).Range.Start, tbl.Cell(4, 2).Range.End).Cells.Merge();
doc.Range(tbl.Cell(2, 3).Range.Start, tbl.Cell(3, 3).Range.End).Cells.Merge();
}
Заголовок таблицы тот же. В итоге результат тот же, при объединении ячеек в соседней колонке так же пишет — запрашиваемый номер семейства не существует.
Почему так, не пойму