Запрашиваемый номер семейства не существует word 2007 как исправить

Ошибка 5941: "Запрашиваемый номер семейства не существует" при добавлении макроса на панель быстрого доступа VBA, Word Решение и ответ на вопрос 2370041

roslova

0 / 0 / 0

Регистрация: 11.12.2018

Сообщений: 3

1

Word

11.12.2018, 21:03. Показов 25742. Ответов 4

Метки vba, макрос (Все метки)


Всем привет. я не программист и у меня такая проблема: писала довольно простой макрос для создания формулы с автоматической нумерацией в ворде (чтобы формула не «съезжала» влево). вроде создаю сам макрос, но когда хочу добавить его на панель быстрого доступа, вылезает ошибка: «ошибка 5941: «запрашиваемый номер семейства не существует».

текст в VisualB такой:

Visual Basic
1
2
3
4
5
6
7
8
Sub формулка()
'
' формулка Макрос
'
'
    ActiveDocument.AttachedTemplate.BuildingBlockEntries( _
        "формула с нумерацией").Insert Where:=Selection.Range, RichText:=True
End Sub

и я понятия не имею, что надо исправить…
помогите пожалуйста

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



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
Проблема возникает, когда нет открытых документов или не открыт документ, на который сделана ссылка. В программе Word предусмотрено изменение свойств только открытых документов.
Примечание. Такие сообщения об ошибках могут появиться также в том случае, если открыт документ, у которого свойство Видимый имеет значение Ложь.



0



oh my god

1454 / 793 / 161

Регистрация: 05.01.2016

Сообщений: 2,307

Записей в блоге: 8

11.12.2018, 21:16

4

Цитата
Сообщение от ram007
Посмотреть сообщение

Видимый имеет значение Ложь.

защиту от дурака надо убрать ))



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 Sub

ErrHandler:
If Err <> 0 Then
'
' Display an error message.
'
MsgBox Err.Description
'
' Clear the error.
'
Err.Clear
Resume Next

End If

End Sub

Приведенный ниже программный код предусмотрен для выполнения следующих целей.

  • Перехват ошибок, если нет открытых документов

    и

  • Создание нового документа при перехвате ошибки

    и

  • Возобновление нормальной работы в строке, вызвавшей появление ошибки

Sub ChangeDocProperties()

On Error GoTo ErrHandler
ActiveDocument.BuiltInDocumentProperties("Title") = "My Title"
Exit Sub

ErrHandler:
If Err <> 0 Then
'
' Add a document.
'
Documents.Add
'
' Clear the error.
'
Err.Clear
'
' Run the code that caused the error.
'
Resume

End If

End Sub


Ссылки

Для получения помощи по работе с Visual Basic обратитесь к следующей статье Microsoft Knowledge Base:

305326 Programming Resources for Visual Basic for Applications

Нужна дополнительная помощь?

 

ddmitriy

Пользователь

Сообщений: 5
Регистрация: 01.10.2014

#1

21.06.2017 17:17:09

Добрый день.
При вставке фотографии в шаблон Word выскакивает ошибка «5941 Запрашиваемый номер семейства не существует»

Код
With WD
Picture_count = Picture_count + 1
    .Bookmarks("pic1").Range.Select
    FolderPic = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Pic1")
    Dim coll As Collection
    If Dir(FolderPic, vbDirectory) = "" Then
        MsgBox "No Folder Pic1" & folder$ & "»", vbCritical, "No Folder "
        GoTo pict_1
    End If
    Set coll = FilenamesCollection(FolderPic, ".jpg")
    For i = 1 To coll.Count
          
       WA.Selection.InlineShapes.AddPicture Filename:=coll.Item(i)
       WA.Selection.TypeParagraph
    Next i
pict_1: End With

Ошибка указывает на строку.

Код
.Bookmarks("pic1").Range.Select

Закладки проверил, всё в норме. Подскажите что ещё может быть не так.

Спасибо.

 

The_Prist

Пользователь

Сообщений: 13962
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Ответ один — его действительно не существует. Если Вы в одну и ту же закладку в цикле что-то пытаетесь записать, то это вполне возможно, т.к. после первой записи закладка как правило удаляется.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#3

21.06.2017 17:34:49

покажите весь код
возможно не правильно обращаетесь к документу либо обращаетесь к неактивному документу с командой select
попробуйте

Код
wd.Activate
 wd.Bookmarks("pic1").Range.Select

Спасибо

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#4

21.06.2017 17:49:06

Цитата
The_Prist написал:
т.к. после первой записи закладка как правило удаляется.

——
Если использовать не диапазон (кусок) текста в закладке, а положение курсора, то ничего не удаляется :))

Спасибо

 

The_Prist

Пользователь

Сообщений: 13962
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Дмитрий, в данном случае активация избыточна, т.к. идет обращение к закладкам конкретного документа: WD. Поэтому озвученная ошибка не может возникнуть по этой причине. Если бы активен был другой документ, то была бы другая ошибка.

Изменено: The_Prist21.06.2017 17:50:14

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#6

21.06.2017 17:51:01

The_Prist,  Поэтому и прошу старттопика показать весь кусок кода. Что там у него за WD только он знает :)

Спасибо

 

ddmitriy

Пользователь

Сообщений: 5
Регистрация: 01.10.2014

#7

21.06.2017 17:54:07

R Dmitry? не помогло.
Весь код:

Скрытый текст

 

The_Prist

Пользователь

Сообщений: 13962
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#8

21.06.2017 17:54:37

Цитата
R Dmitry написал:
Если использовать не диапазон

если кусок — да, не удалится. Но у ТС-а же не так :)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

Формулировка задачи:

Здравствуйте. Пишу макрос для ворда, надо перебирать символы. При отладке вылетает «Ошибка № 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

Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.

Возможны случаи удаления файлов или появления новых файлов. Хотя этот симптом в основном связан с заражением вирусом, его можно отнести к симптомам ошибки времени выполнения, поскольку заражение вирусом является одной из причин ошибки времени выполнения. Пользователь также может столкнуться с внезапным падением скорости интернет-соединения, но, опять же, это не всегда так.

Fix Ошибка Microsoft Word 5941 (Error Ошибка 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, вы можете сделать следующее:

  1. Сбросьте настройки браузера.
    • В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
    • Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
  2. Отключить отладку скриптов и уведомления об ошибках.
    • В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
    • Установите флажок в переключателе.
    • Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.

Если эти быстрые исправления не работают, вы всегда можете сделать резервную копию файлов и запустить восстановление на вашем компьютере. Однако вы можете сделать это позже, когда перечисленные здесь решения не сработают.

Другие языки:

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.

The Author Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.

Следуйте за нами: Facebook Youtube Twitter

Последнее обновление:

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

Мурад

Дата: Вторник, 08.11.2016, 10:36 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Всем доброго времени суток!
Один замечательный программист на этом форуме написал прекрасный макрос для объединения нескольких книг и листов в один файл. Макрос называется «Consolidated_Range_of_Books_and_Sheets».
А вот как сделать то же самое для нескольких файлов Word? Перекинуть данные из этих файлов в один файл Excel, друг под другом.
Прикладываю 2 файла для примера.

 

Ответить

Мурад

Дата: Вторник, 08.11.2016, 11:06 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Вот нашел макрос Hugo:
[vba]

Код

Sub Макрос1()
    Dim flag As Boolean
    Dim WordApp As Object
    On Error Resume Next
    Set WordApp = GetObject(, «word.application»)
    If WordApp Is Nothing Then Set WordApp = CreateObject(«word.application»): flag = True
    On Error GoTo 0
    With WordApp
        With .Documents.Open(«c:test.doc»)
            .tables(1).Range.Copy
            ActiveSheet.Paste
            .Close False
        End With
    End With
    If flag Then WordApp.Quit
    Set WordApp = Nothing
End Sub

[/vba]
из темы макрос Hugo. Посмотрим, подходит ли для выгрузки данных из нескольких файлов

 

Ответить

Мурад

Дата: Вторник, 08.11.2016, 11:19 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Не подошло. Руки надо ровнять дальше. А пока дальше воспользуемся тем, что уже придумали. Следующий Макрос от Gustav:
[vba]

Код

Sub ImportWordTable()
Dim wdDoc As Object
Dim wdFileName As Variant
Dim TableNo As Integer ‘table number in Word
Dim iRow As Long ‘row index in Excel
Dim iCol As Integer ‘column index in Excel

wdFileName = Application.GetOpenFilename(«Word files (*.doc),*.doc», , _
«Browse for file containing table to be imported»)

If wdFileName = False Then Exit Sub ‘(user cancelled import file browser)

Set wdDoc = GetObject(wdFileName) ‘open Word file

With wdDoc
TableNo = wdDoc.tables.Count
If TableNo = 0 Then
MsgBox «This document contains no tables», _
vbExclamation, «Import Word Table»
ElseIf TableNo > 1 Then
TableNo = InputBox(«This Word document contains » & TableNo & » tables.» & vbCrLf & _
«Enter table number of table to import», «Import Word Table», «1»)
End If
With .tables(TableNo)
‘copy cell contents from Word table cells to Excel cells
For iRow = 1 To .Rows.Count
For iCol = 1 To .Columns.Count
    Cells(iRow, iCol) = WorksheetFunction.Trim( _
                        WorksheetFunction.Clean( _
                        Replace( _
                        Replace( _
                        Replace( _
                        .cell(iRow, iCol).Range.Text _
                        , vbLf, » «) _
                        , vbCr, » «) _
                        , vbTab, » «) _
                        ))
Next iCol
Next iRow
End With
End With

Set wdDoc = Nothing

End Sub

[/vba]

Макрос работает только с 1 файлом Ворд, и после выбора файла из примера «Азов 2-6» выдает ошибку 5941 «Запрашиваемый номер семейства не существует»

 

Ответить

Мурад

Дата: Вторник, 08.11.2016, 11:24 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

О, тему перенесли сюда… Так макрос откуда запускать? Из Visual Basic Ворда или Экселя?))) Вроде это вопрос по VBA был. Ну да ладно

 

Ответить

Мурад

Дата: Вторник, 08.11.2016, 12:32 |
Сообщение № 5

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Вот! Нашел недостающую часть макроса, который работает с одним файлом и переносит данные из него в Excel:
[vba]

Код

Sub CopyOldWordDoc()
Dim a As Variant, MainBook As Workbook, CurrentSheet As String
Set MainBook = ActiveWorkbook
CurrentSheet = ActiveSheet.Name
Dim FD As FileDialog
Dim iFileName As String
Dim Book As Workbook
Dim CheckNameBook As String
Set FD = Application.FileDialog(msoFileDialogFilePicker)
With FD
.Filters.Clear
.Filters.Add «Microsoft Word files», «*.doc»
.Filters.Add «All files», «*.*»
.AllowMultiSelect = False
.InitialFileName = ThisWorkbook.Path
.Title = «Открытие документа»
.ButtonName = «Открыть»
If .Show = False Then
MsgBox «Вы не указали файл — источник!», 48, «Ошибка»
Exit Sub
Else
iFileName = .SelectedItems(1)
End If
End With
Set FD = Nothing
‘<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>­>
‘ Открытие документа Word и копирование содержимого в новую книгу
‘<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>­>
Dim WordApp As Object, CopyArea As Variant
Set WordApp = CreateObject(«Word.Application»)
WordApp.Application.Visible = False
WordApp.Documents.Open Filename:=iFileName
With WordApp.ActiveDocument
Set CopyArea = .Range(0, .Characters.Count)
CopyArea.Select
WordApp.Selection.Copy
End With
Workbooks.Add
Dim TempBook As Workbook
Set TempBook = ActiveWorkbook
‘TempBook.Worksheets(1).Cells.NumberFormat = «@»
TempBook.Worksheets(1).Range(«A1»).Select
ActiveSheet.Paste
‘Application.CutCopyMove = False
WordApp.Quit
‘<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>­>
‘ Поиск данных в новой книге и копирование их в форму
‘<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>­>

MainBook.Activate
Worksheets(CurrentSheet).Activate
Range(«A1»).Activate
End Sub

[/vba]

 

Ответить

Мурад

Дата: Вторник, 08.11.2016, 12:37 |
Сообщение № 6

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Осталось добавить возможность выбора нескольких файлов Ворд, создания из них коллекции, запуска цикла и в цикле прописать код из верхнего макроса

 

Ответить

Gustav

Дата: Вторник, 08.11.2016, 23:38 |
Сообщение № 7

Группа: Друзья

Ранг: Старожил

Сообщений: 2295


Репутация:

918

±

Замечаний:
0% ±


начинал с Excel 4.0, видел 2.1

Что это за «театр одного актера»? И на меня напраслину почём зря не возводИте: макрос тот я не писал, только прокомментировал один оператор. И совершенно по другому поводу. Так что коллега по ходу рамсы попутал. В натуре!


МОИ: Ник, Tip box: 41001663842605

 

Ответить

Мурад

Дата: Среда, 09.11.2016, 10:46 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Gustav, извиняюсь конечно. Я сослался на вас, потому что увидел ваше сообщение с этим кодом. Я пытаюсь обобщить все беседы, имевшие отношение к выгрузке данных из Ворд в Эксель. Вот в этой теме вы предложили решение, являющимся, на мой взгляд, сердцем макроса. Более того, автор того топа поблагодарил вас, указав, что ваш код «то, что нужно для импорта таблиц из Word».
Насчет театра одного актера, я пытался привлечь к дискуссии других ребят, которые направили бы меня в правильное русло. Или здесь не форум?

 

Ответить

  • 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

  • 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
  • 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
   Falex

16.11.09 — 21:07

Платформа пишет такую ошибку:

Ошибка при вызове метода контекста (Item): Произошла исключительная ситуация (Microsoft Word): Запрашиваемый номер семейства не существует.

       Макет=ПолучитьМакет(«Макет»);

       MSWord = Макет.Получить();

       Попытка

           Шаблон = MSWord.Application.Documents(1);

           Шаблон.Activate();



Таблица = Шаблон.Tables.Item(1);

Эта обработка на моем компьютере отрабатывает. По отладчику посмотрел на другом компьютере (где не работает): количество таблиц равно нулю. На всякий случай нарисовал прямо на данном компьютере еще одну таблицу в ActiveDocument. И все равно количество таблицу в документе равно нулю.

Что может быть не так?

   Falex

1 — 16.11.09 — 21:07

вылетает на этом месте:

Таблица = Шаблон.Tables.Item(1);

   dk

2 — 16.11.09 — 21:15

видимо шаблон переаполняется

   Лефмихалыч

3 — 16.11.09 — 21:23

а может нет там в этой коллекции элементов? Посмотри Шаблон.Tables.Count

   Falex

4 — 16.11.09 — 21:24

всмысле шаблон перезаполняется?

так я и смотрю Шаблон.Tables.Count()

Он равен нулю.

   Тьма

5 — 16.11.09 — 21:27

MSWord.Application.Documents().Count() — сколько?

   Falex

6 — 16.11.09 — 21:27

причем я сделал еще так: взял скопировал свой шаблон в doc файл. скопировал его на тот компьютер. загрузил в activedocument. та же ерунда.

   Falex

7 — 16.11.09 — 21:29

MSWord.Application.Documents().Count() = 1

   Falex

8 — 16.11.09 — 21:30

причем у меня что закомментировано тоже не проходит, а проходит иначе

           //Шаблон.Fields.item(1).Result.Text = Формат(Дата, «ДЛФ=D»)+» г.»;

           Замена = Шаблон.Content.Find;

           Замена.Execute(«[Дата]», Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(Дата, «ДЛФ=D»)+» г.»);

   dk

9 — 16.11.09 — 21:35

Шаблон = MSWord.Application.Documents(1);

Шаблон.Tables.Count()



что говорит?

   Falex

10 — 16.11.09 — 21:44

говорит 0

   Falex

11 — 16.11.09 — 21:45

а у меня говорит 2 (сколько и есть на самом деле)

   Falex

12 — 16.11.09 — 21:46

ЗЫ: базы одинаковые, но тестируются на разных машинах.

   dk

13 — 16.11.09 — 21:52

версии МС офиса одинаковые?

   Falex

14 — 16.11.09 — 21:53

и там и там 2007. СОхраняю для надежности в 2003.

   dk

15 — 16.11.09 — 21:57

значит не тот макет

   Falex

16 — 16.11.09 — 21:58

всмысле не тот макет?

   Falex

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

+ выкинуть попытку

   Falex

21 — 16.11.09 — 22:19

это что за ссылка?

Что попробовать?

Шаблон.Visible = -1;???

   Тьма

22 — 16.11.09 — 22:21

   Falex

23 — 16.11.09 — 22:28

блин.

Система в настоящее время не доступна. Пожалуйста попытайтесь позже или свяжитесь с службой поддержки, если Вам необходима срочная помощь.http://support.microsoft.com/contactus/?ws=support

   Falex

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 на основе соответствующего шаблона, создаёт в документе необходимые переменные, присваивает им значения, обновляет все поля документа, отправляет документ на печать либо (в зависимости от выбора пользователя) сохраняет его и открывает для редактирования.

Также в некоторых документах производится тиражирование многострочной части и вставка графических изображений.

Режим разработки шаблона

Используется для облегчения модификации пользовательских шаблонов. Отличается от обычного тем, что создаёт резервную копию шаблона, открывает сам шаблон, а не документ на его основе, выгружает все переменные, а не только необходимые, а также не тиражирует многострочные части и не вставляет графические изображения.

Открытый шаблон содержит все переменные, подготавливаемые АвтоПарком. Для того, чтобы определить наименование именно той переменной, которую Вы желали бы вывести в отчётной форме, прежде всего стоит посмотреть в шаблонах, подобных разрабатываемому. Кроме того, во время разработки шаблона можно выбрать режим с выгрузкой полного списка переменных этого шаблона. Если переменной, которую Вы желали бы вывести в отчётной форме, нет в шаблоне, следует оформить ТТ на формирование такой переменной.

Особенности

  1. В режиме разработки графические изображения в шаблон не выгружаются и, соответственно, не видны.

Публикация шаблона

Используется для окончательного оформления пользовательского шаблона, подготовленного в режиме разработки или другим способом. Внимание! Работа в «обычном режиме» (печать на принтер, печать в файл) с неопубликованным пользовательским шаблоном невозможна!

Сразу после установки режима предлагается выбрать шаблон для публикации.

С выбранного шаблона делается резервная копия, затем удаляются неиспользуемые в шаблоне переменные, значения используемых заменяются на символы «X» и «0», после чего шаблон сохраняется, а режим работы с Word возвращается в прежнее значение.

Повторно опубликовать шаблон безвредно.

Как заказать новый Word-отчёт

  • В случае если Вам необходим какой-либо отчёт, его необходимо заказать, используя стандартную форму оформления технического требования.
  • Если по каким-либо причинам Вам необходимо, чтобы отчёт готовился с использованием MS Word, следует отразить данный факт в ТТ. В ТТ следует отразить, какие данные должны быть выгружены в Word, а также приложить к нему проект шаблона отчёта, выполненный в виде шаблона Word.

Создание пользовательского шаблона

Существует возможность пользователю самостоятельно дорабатывать и изменять готовую отчетную форму MS-Word. При использовании такого шаблона АвтоПарк подготавливает набор переменных документа в обычном режиме, но формирование выходной формы происходит на основе пользовательского шаблона. Это позволяет использовать нестандартные формы вместо подготавливаемых АвтоПарком.

Может быть две причины самостоятельной модификации выходных форм:

  1. Данная форма изначально изготавливается самим пользователем (к этому относятся, например, шаблоны текстов договоров, дополнительных соглашений и т.п.). Согласно п. 2.9 договора на сопровождение системы АвтоПарк: «При реализации готовой настраиваемой или свободной выходной формы, Исполнитель, кроме изменений прикладного программного обеспечения, реализует также образец выходной формы стандартными программными средствами. Дальнейшие технические требования по изменению выходной формы, реализованной как готовая настраиваемая или свободная, могут выдаваться Заказчиком только в части факторов, которые определяются программным обеспечением Системы, в соответствии с положениями пункта 1.2.12.4 настоящего договора. Изменения таких выходных форм в части факторов, которые определяются стандартными программными средствами, в стоимость настоящего договора не входят». Это означает, что пользователи самостоятельно разрабатывают собственные формы на основании предоставленных образцов, но в случае, например, изменения внутренней структуры формы, разработчики окажут помощь в поддержке работоспособности таких форм.
  2. Пользователь самостоятельно вносит изменения в стандартный вид выходной формы. Чаще всего такие формы изготавливаются из-за того, что на предприятии принят вид формы, либо не отвечающий требованиям нормативных документов, либо содержащий лишнюю и ненужную в этих формах информацию (например, если на Вашем предприятии используется форма приказа о приёме на работу, отличная от стандартной формы 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
Регистрация: 01.10.2014

#1

21.06.2017 17:17:09

Добрый день.
При вставке фотографии в шаблон Word выскакивает ошибка «5941 Запрашиваемый номер семейства не существует»

Код
With WD
Picture_count = Picture_count + 1
    .Bookmarks("pic1").Range.Select
    FolderPic = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "Pic1")
    Dim coll As Collection
    If Dir(FolderPic, vbDirectory) = "" Then
        MsgBox "No Folder Pic1" & folder$ & "»", vbCritical, "No Folder "
        GoTo pict_1
    End If
    Set coll = FilenamesCollection(FolderPic, ".jpg")
    For i = 1 To coll.Count
          
       WA.Selection.InlineShapes.AddPicture Filename:=coll.Item(i)
       WA.Selection.TypeParagraph
    Next i
pict_1: End With

Ошибка указывает на строку.

Код
.Bookmarks("pic1").Range.Select

Закладки проверил, всё в норме. Подскажите что ещё может быть не так.

Спасибо.

 

The_Prist

Пользователь

Сообщений: 13999
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Ответ один — его действительно не существует. Если Вы в одну и ту же закладку в цикле что-то пытаетесь записать, то это вполне возможно, т.к. после первой записи закладка как правило удаляется.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#3

21.06.2017 17:34:49

покажите весь код
возможно не правильно обращаетесь к документу либо обращаетесь к неактивному документу с командой select
попробуйте

Код
wd.Activate
 wd.Bookmarks("pic1").Range.Select

Спасибо

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#4

21.06.2017 17:49:06

Цитата
The_Prist написал:
т.к. после первой записи закладка как правило удаляется.

——
Если использовать не диапазон (кусок) текста в закладке, а положение курсора, то ничего не удаляется :))

Спасибо

 

The_Prist

Пользователь

Сообщений: 13999
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Дмитрий, в данном случае активация избыточна, т.к. идет обращение к закладкам конкретного документа: WD. Поэтому озвученная ошибка не может возникнуть по этой причине. Если бы активен был другой документ, то была бы другая ошибка.

Изменено: The_Prist21.06.2017 17:50:14

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#6

21.06.2017 17:51:01

The_Prist,  Поэтому и прошу старттопика показать весь кусок кода. Что там у него за WD только он знает :)

Спасибо

 

ddmitriy

Пользователь

Сообщений: 5
Регистрация: 01.10.2014

#7

21.06.2017 17:54:07

R Dmitry? не помогло.
Весь код:

Скрытый текст

 

The_Prist

Пользователь

Сообщений: 13999
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#8

21.06.2017 17:54:37

Цитата
R Dmitry написал:
Если использовать не диапазон

если кусок — да, не удалится. Но у ТС-а же не так :)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

Делаю выгрузку из 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();
}

Заголовок таблицы тот же. В итоге результат тот же, при объединении ячеек в соседней колонке так же пишет — запрашиваемый номер семейства не существует.

Почему так, не пойму

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Запотело пластиковое окно между стекол как исправить почему
  • Заявление ошибочно переведенные деньги
  • Затем слово предоставили молодым авторам читавшим свои стихи где ошибка
  • Заявление об ошибочном платеже мегафон образец
  • Застряла бумага ошибка эпсон

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии