Ошибка переменная документа не указана word

Обновлено: 07.07.2024

Столкнулся с такой ситуацией. Есть документ word. В нём используется несколько сотен переменных типа docvariable, однако их заносили методом ctr+c ctr+v и в коллекции variables документа их нет. Подскажите, пожалуйста, способ как можно получить полный перечень используемых в документе переменных.

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

При печати документа из word появляются цифры в документе которых быть не должно
Здравствуйте, такая беда, наш юрист как то печатает документ, что вылазят вот такие неприятности.

При сохранении в PDF добавляются номера страниц, которых нет в документе
Кнопка "Удалить нумерацию страниц" неактивна, но в док-файле нумерации и нет. Никаких галочек на.

Как выделить текст в документе word
Пытаюсь выделить текст в документе word. Выдает ошибку. Подскажите как от нее избавиться? var .

Как заименовать таблицу в документе Word?
Как таблице присвоить некоторое имя по которому ее можно будет искать в документе? И что бы оно.

чтобы не задавать много вопросов, лучше бы приложили файл

Благодарю за замечание. Действительно, по текстовому описанию проблему довольно сложно представить. Оригинальный документ выложить не могу, воспроизвёл ситуацию в пустом документе.

В примере использовано 6 ссылок на разные переменные. Только первые две из них созданы командой ActiveDocument.Variables.Add, и они есть в коллекции Variables. Остальные были просто вставлены в самом файле word при помощи Ctr+F9 и таких вставок в оригинальном документе несколько сотен.

сам файл пустой, в коде ничего нет, так как файл с расширением docx, а должен быть с другим.

В этом файле нет кода на VBA. Переменные DocVariables (Вставка - Поле. ) - это не макросы. Посмотреть их можно по Alt + F9. Скачал, посмотрел. Всё нормально. Все вставки вида на своих местах.

Добавил небольшой скрипт для вывода списка переменных в коллекции.

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


Но суть проблемы всё-таки не в этом. В оригинальном документе (без макросов) содержится огромное количество таких вот переменных (полей типа Docvariables), которые нужно заполнить, но нет их полного перечня. Было бы здорово, если к этим переменным можно было обращаться через коллекцию variables. И вроде бы заполнять их значения так можно, но без полного списка непонятно как выполнить их полный перебор.

Решение

мистика, в приложенном файле в посте 3 ни Альтом+Эф9 ни кодом из поста 8 ничего не увидеть.

Как найти слово в документе Word
Народ Подскажите плиз как можно в документе Word отыскать слово и скажем заменить его другим или.


Как в документе Word перемешать список
Привет народ . Прошу помощи , так-как с подобной задачей ещё не сталкивался. В общих чертах.

Как определить пустую страницу в документе Word
Имеется набор документов .txt, после преобразования их в один документ .doc (кодировка MSDOS.

Как сохранить текст в документе Word (doc)?
У меня есть некоторый текст, а также переменные которые требуется сохранить в вордовском.


заме желтая текст

Причина

Эта проблема обычно возникает, если файл был изменен сторонним программным обеспечением во время передачи и из-за этого не открывается.

Решение

Сначала щелкните правой кнопкой мыши файл Word, с которым возникли проблемы, и выберите "Свойство".

заме желтая текст

нажмите


кнопку "Разблокировать", а когда все будет готово, нажмите кнопку "ОК". (Примечание. В файле Word с правильной работой не отображается кнопка "Разблокировать").

заме желтая текст

этом случае вы сможете открыть этот файл


без дополнительных проблем. Если вы столкнулись с этой проблемой во многих файлах, попробуйте сделать следующее: сначала переместите эти файлы в ту же папку, откройте Word 2010, а затем щелкните "Файл" и выберите "Параметры". (В Word 2007 нажмите кнопку "Office" и выберите "Параметры Word").

заме желтая текст


"Центр управления доверием" и щелкните "Параметры центра управления доверием".


далее, щелкните "Надежные расположения" и нажмите кнопку "Добавить новое расположение".


"ОК", а затем нажмите кнопку "ОК" еще раз.

Обратная связь важна для нас

Вы удовлетворены нашим содержимым? Как бы вы ни были:
"Отлично! Проблемы решены".
или "Проблемы не решены. У меня есть идея по-лучше".
Мы хотели бы, чтобы вы предоставили нам свои ценные мнения с помощью формы опроса, которая может быть расположена в нижней части этой статьи. Мы будем рады любым стимулам, которые могут быть у вас, и будем создавать для вас более полезные технические статьи.

Доброго времени суток!
Я бы хотел поднять скорее идейный вопрос: Как правильно заполнять шаблон Word?
Я знаю как минимум 5 способов заполнения Word шаблона, и все 4 имеют свои недостатки, пятый же настолько ужасен, что я его даже приводить не буду. Но крови он мне попил изрядно, т.к. приходится работать с чужим кодом. И так, давайте я перечислю то что знаю и плюсы и минусы этих подходов, а вы может быть подкините ещё способов для размышления, а может быть даже посоветуете единственно верный! Думаю тема будет многим полезна.
Описываю всё по русской версии Word.

1. DocVariable
Можно вставлять в шаблон поля с типом DocVariable, давать им имена, а потом в коде обращаться к ним примерно так:

2-3 FormText или Bookmarks
Эти 2 способа я объединю, т.к. они по сути одинаковы и второй полностью перекрывает третий.
Второй и опишу. В шаблон вставляется Поле FORMTEXT, ему присваивается Закладка, по которой мы и будет обращаться к полю в коде. Примерно так:

Ну и тоже самое с закладками, т.е. можно вставить в документ Закладку и почти так же к ней обращаться, только закладки не видны в Шаблоне в отличии от FormText, что не очень удобно.
Плюсы: в Шаблоне видны места вставок их отображение можно включать и отключать (Alt+F9). Если в коде мы ей ничего не присваиваем, ничего не происходит.
Минусы: что бы увидеть имя Закладки, нужно лезть в свойства Поля. Одно и тоже Поле (т.е. с одинаковой Закладкой) нельзя использовать в разных местах.

А какой способ используете вы и почему? Может быть я не правильно использую какой-либо из вышеперечисленных способов и можно исключить перечисленные в нём минусы? Я лично пользуюсь первым способом, т.к. его единственный минус наиболее безобидный на мой взгляд.

Ошибка переменная документа не указана

Столкнулась с проблемой при заполнении документа .dot.
Может кто-нибудь знает, как ее обойти? Подскажите, пожалуйста.

В вашем случае просто видимо либо в dot нету макроса, либо он не запускается при формировании документа.

Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB

ИТ-записки Чорнага кашака

Язык программирования самого высокого уровня содержит всего несколько команд для управления программистами

15 мар. 2010 г.

Использование полей и закладок при работе с MS Word из Delphi

и расставил поля по тексту шаблона. В макросе у метода Add первый параметр – название переменной, а второй – ее значение. Я специально сделал их одинаковыми, чтобы пользователям было проще и нагляднее редактировать шаблоны.
Затем внес изменения в методы модуля работающие с MS Word. Если опустить все детали и различную логику, то упрощенно работа с MS Word выглядит так:

Вот такая логика у индусов, писавших этот кусок MS Word.

После присвоения значений всем переменным, осталось только дать команду полям обновиться новыми значениями переменных. Для этого в VBA у коллекции объектов полей (Fields) есть метод Update:

А для того, чтобы избежать дальнейшего обновления полей, избавимся от их связи с переменными:

У каждого структурного элемента документа (заметки, колонтитула, сноски и т.д.) своя коллекция объектов полей, поэтому, если документ, как у меня, состоит из разных структурных элементов, то методы Update и Unlink необходимо вызвать для каждого из этих элементов. Для этого перебираем все элементы коллекции StoryRanges.

procedure MSWordUpdateStoryRanges;
Var
StoryRanges: Word2000.StoryRanges;
StoryRange: Word2000.Range;
iStoryIndex: integer;
Begin
StoryRanges := wa.ActiveDocument.StoryRanges;
For iStoryIndex := wdMainTextStory to wdFirstPageFooterStory do
Try
StoryRange := StoryRanges.Item(iStoryIndex);
If StoryRange <> nil then
begin
StoryRange.Fields.Update;
StoryRange.Fields.Unlink;

While (StoryRange.NextStoryRange <> nil) do
begin
StoryRange := StoryRange.NextStoryRange;
StoryRange.Fields.Update;
StoryRange.Fields.Unlink;
end;
end;
Except
StoryRange := nil;
End;
End;

И вызываю ее перед сохранением документа.

Вот и все 🙂
Раннее связывание и использование полей/закладок дало существенный рост скорости генерации писем. Если на 500-х различных документах этого было почти не заметно, то при генерации 15 000 документов, прирост скорости составил 30% (специально проверил несколько раз на одних и тех же исходных данных).

В продолжение темы заполнения шаблонов MS Word данными из 1С (8.1). Обработка оформлена как ВПФ. Она не заточена под конкретную типовую конфигурацию и(или) шаблон документа. Алгоритм заполнения шаблона представляет собой табличный документ. Шаблон документа и алгоритм его заполнения можно хранить в самой обработке, в справочнике «Хранилище дополнительной информации» или в файлах.

Нашла! Это что-то вроде: (Footers - нижний колонтитул; Headers - верхний)
Замена = Док.Sections(1).Footers(1).Range.Find;
Замена.Execute(ИмяПеременной, , , , , , , , ,Строка(Значение), 2);
// обновим поля нижнего колонтитула
Док.Sections(1).Footers(1).Range.Fields.UpDate();

(24) prog-eg, Здравствуйте! Хотела воспользоваться Вашим методом. У меня в верхнем колонтитуле НазваниеОрганизации.

Код:
// Получим документ из объекта и активируем его
Документ = ОбъектВорд.Application.Documents(1);
Документ.Activate();

//Поиск и замена маркеров в колонтитулах
Замена1 = Документ.Sections(1).Headers(1).Range.Find;
Замена1.Execute("[НазваниеОрганизации]", , , , , , , , ,НазваниеОрганизации, 2);
// обновим поля верхнего колонтитула
Документ.Sections(1).Headers(1).Range.Fields.UpDate();

// Поиск и замена маркеров
Замена = Документ.Content.Find;
Замена.Execute("[НомерПриказа]", , , , , , , , , НомерПриказа, 2);
Замена.Execute("[Должность]", , , , , , , , ,Должность, 2);
Замена.Execute("[ДатаПриказа]", , , , , , , , ,ДатаПриказа, 2);

Поля в документе заполняет, а в колонтитуле нет. Что я написала не так?

Давайте будем идти в ногу со временем будет ли работать в офис 2007? Давайте не будем бежать впереди паровоза :D
2007 офис совсем другая бодяга. Там гораздо проще можно. Душелов выкладывал примерчики. При формировании файла даж офис нафиг не нужен. А для 2003-го самое то. 8) Сразу при зпуске :(
: Переменная не определена (ОбщегоНазначения)
НазначениеСвойства = <<?>>ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(Объект);
: Переменная не определена (ОбщегоНазначения)
НазначениеСвойства = <<?>>ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(Объект);

(9) 1) Боюсь, что просто убрать "ОбщегоНазначения." не получится. Я не зря предлагал переименовать функцию, т.к у меня в общем модуле "Общего назначения" уже есть эта функция (модуль глобальный). В результате имеем:

: Процедура или функция с указанным именем уже определена (ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке)
Функция <<?>>ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(Ссылка) Экспорт

2) Опять же тяжелое наследие 8.0:

: Поле объекта не обнаружено (ВидОбработки)
Форма.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма;

Форма есть, а вот реквизит отсутствует.

(11) п.1 так и сделаю. Чуть позже.
п.2 В "Платежных документах" таже ситуация с реквизитом. Уже исправлено. Скачай, проверь.

(12) Может я чего-то не понимаю, но ситуация совершенно не изменилась. Более того, вернулась к исходному состоянию:

: Поле объекта не обнаружено (ВидОбработки)
Форма.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма;

(14) Мне кажется, не будет.
Хранилище = Справочники.ХранилищеДополнительнойИнформации.
Есть такой справочник?

Хочу попробовать обработку, но никак не могу :D

С 14:30 27.10 по 22:00 28.10 на сайте была ранняя версия обработки. Все кто скачал в указанный промежуток времени - скачайте заново.

(16) В текущей версии наличие справочника "ВнешниеОбработки" проверяется при открытии формы. При его отсутствии, форма не открывается.

аналогичная ошибка - старая конфига УПП конвертированная с 8.0.
Если обработка претендует на универсальность, то зачем использовать ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке, тем более, что эта же функция уже есть в модуле объекта? Может стоит ее переобозвать типа оПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке и использовать ее?

Или указать совместимость с типовыми конфигурациями 8.1.

У меня самописка с 0 никаких типовых переменных и процессов нету плюсану, хотя пользоваться не буду. но описано подробно. можно понять зачем и для чего. за это и плюс. (14) Извините, погорячился насчет справочника ХранилищеДополнительнойИнформации - его наличие ищется по метаданным и его отсутствие не влияет на работу.
А вот наличие Справочники.ВнешниеОбработки требуется при начале выбора объекта.

(14) Зависит от конфигурации и полноты использования обработки.

3. Если ты хочешь хранить шаблон и(или) алгоритм внутри базы, у тебя в добавок к п.2 должен быть справочник "ХранилищеДополнительнойИнформации" с реквизитом Хранилище типа ХранилищеЗначения.

5. Если ты хочешь чтобы обработка сама зарегистрировалась в твоей базе, у тебя ВПФ должны храниться в справочнике "ВнешниеОбработки".

не заполняет параметры если они расположены в колонтитулах, а хотелось бы :)

алгоритм и шаблон для Трудового договора,
как заполнить <Период тарифной ставки> не знаю, если кто подскажет - буду благодарен

Либо я что-то не так делаю.
У меня в Word 2003 не вставляется поле.
Его предварительно в свойствах документа не надо завести? Есть один неприятный момент, когда выгружаешь в Word 2003:
Если переменная используется в колонтитуле (в моём случае есть только нижний), то она не обновляется автоматически при вызове метода
Док.Fields.Update();
т.е. когда документ уже открылся, то нужные значения в колонтитулах не появляются.
Эту проблему нагуглил в инете и получилось чуть более громоздко, но теперь все переменные заполняются:
Для каждого oStory Из Док.StoryRanges Цикл
Для каждого oField Из oStory.Fields Цикл
oField.Update();
КонецЦикла;
КонецЦикла;
Подскажите как обновить переменную в колонтитуле, пробовала как в (22) но все равно не обновляется (22) Ganjubas, Хоть совет и старый. Но работает.
Помогло на отлично.
Спасибо большое. Скажите пожалуйста, возможно в обработке передать в Word строку неопределенной длины (> 255 знаков) в один шаблон?

Поля типа DocVariable не заполняются в колонтитулах Word-a.

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

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

Была еще мысль, что по хорошему нужно знать множество заполняемых свойств файла (один список), а уже его заполнять или же из алгоритмов (когда их заполнение обозначено) или же из свойств некоей унифицированной структуры, заполняемой запросом (в ЗиУП подобные запросы есть). Это я к тому, что всякие там сведения о организациях, физических лицах и т.п. одним шаблоном алгоритма проблематично реализовать.

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