Проблема
При попытке использовать 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
Нужна дополнительная помощь?
Автор bestname, 29 апр 2016, 15:35
0 Пользователей и 1 гость просматривают эту тему.
Здравствуйте. Формирую word файл. Никак не могу добавить строки из табличной части документа в word. Все получается, только если в ТЧ документа одна строка. Если больше, то получаю ошибку:
{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(3000)}: Ошибка при вызове метода контекста (Cell): Произошла исключительная ситуация (Microsoft Word): Запрашиваемый номер семейства не существует
Я так понимаю, что я обращаюсь к ячейке еще не созданной строки. Но я вроде как ее создаю. Наверное неправильно создаю.
Договор = ПолучитьМакет("Макет");
MSWord = Договор.Получить();
Попытка
Doc = MSWord.Application.Documents(1);
Doc.Activate();
//Товары
ТекСтрока = ЭлементыФормы.Товары.ТекущаяСтрока;
Для Каждого ТекСтрока Из Товары Цикл
НомерСтроки = ТекСтрока.НомерСтроки + 1;
//Добавляем новую строку таблицы
Doc.Tables(2).Rows.Add();
Doc.Tables(2).Cell(НомерСтроки, 1).Range.Text = ТекСтрока.НомерСтроки;
Doc.Tables(2).Cell(НомерСтроки, 2).Range.Text = ТекСтрока.Номенклатура.НаименованиеПолное;
Doc.Tables(2).Cell(НомерСтроки, 3).Range.Text = ТекСтрока.ЕдиницаИзмерения.Наименование;
Doc.Tables(2).Cell(НомерСтроки, 4).Range.Text = ТекСтрока.Количество;
Doc.Tables(2).Cell(НомерСтроки, 5).Range.Text = ТекСтрока.Цена;
Doc.Tables(2).Cell(НомерСтроки, 6).Range.Text = ТекСтрока.Сумма;
КонецЦикла;
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;
возврат 0;
Что я делаю неправильно?
Doc.Tables(2).Cell(НомерСтроки,)<—- нет такого элемента
Добавлено: 29 апр 2016, 15:50
т.е. по данному номеру строки не может найти элемент
Добавлено: 29 апр 2016, 15:54
по идеи Doc.Tables(2).Rows.Add() должно вернуть вам строку
Помогли — Скажи спасибо! Решил сам — поделись решением!
Короче я понял. Строка добавляется в конце таблицы. А мне нужно с определенного места(со второй строки). Я так понимаю, что в
Doc.Tables(2).Rows.Add();
мне нужно передать параметры?
Пишу
Doc.Tables(2).Rows.Add(2);
{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(2993)}: Ошибка при вызове метода контекста (Add): Произошла исключительная ситуация (Microsoft Word): Неверный параметр
Вот как выглядит макет моей таблицы:
Добавлено: 05 мая 2016, 11:54
Вообщем получилось, строка добавилась после второй строки. Но добавилась, когда я снял объединение ячеек. Вот такая команда:
Doc.Tables(2).Rows(2).Select();
MSWord.Application.Selection.InsertRowsBelow(1);
Но поскольку у меня некоторые ячейки объеденены, то вылазит ошибка:
{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(2994)}: Ошибка при вызове метода контекста (Rows): Произошла исключительная ситуация (Microsoft Word): Отсутствует доступ к отдельным строкам, поскольку таблица имеет ячейки, объединенные по вертикали
Может кто подскажет?
Трудно хелп поставить по VBA?
«Exists Method
See AlsoApplies ToExampleSpecificsDetermines whether the specified bookmark or task exists. Returns True if the bookmark or task exists.
expression.Exists(Name)
expression An expression that returns a Bookmarks or Tasks object.
Name Required String. A bookmark or task name.
Example
This example determines whether the bookmark named «start» exists in the active document. If the bookmark exists, it’s deleted.
If ActiveDocument.Bookmarks.Exists(«start») = True Then
ActiveDocument.Bookmarks(«start»).Delete
End If
This example determines whether the Windows Calculator program is running (if the task exists). If Calculator isn’t running, the Shell statement starts it. If Calculator is running, the application is activated.
If Tasks.Exists(«Calculator») = False Then
Shell «Calc.exe»
Else
Tasks(«Calculator»).Activate
End If
Tasks(«Calculator»).WindowState = wdWindowStateNormal
» (C)
ddmitriy Пользователь Сообщений: 5 |
#1 21.06.2017 17:17:09 Добрый день.
Ошибка указывает на строку.
Закладки проверил, всё в норме. Подскажите что ещё может быть не так. Спасибо. |
||||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для 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 Пользователь Сообщений: 14182 Профессиональная разработка приложений для 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 Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#8 21.06.2017 17:54:37
если кусок — да, не удалится. Но у ТС-а же не так Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
roslova 0 / 0 / 0 Регистрация: 11.12.2018 Сообщений: 3 |
||||
1 |
||||
Word 11.12.2018, 21:03. Показов 26807. Ответов 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 |