Переменные в ворде как сделать

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

Репутация: нет
Всего: 0

Народ, возникла проблема. Хотя она достаточно стандарнтая, но в Дельфине я почти ламер=)

Итак, в чем нужно помочь:
1)передача в Word--как сделать?(пример плиз=))
2)Передать в Word стринговые и интовые переменные, но не абы как,а в виде

Переменная б
Переменная с
Интовая переменная

То есть покажите плиз, как передать в столбик с строковыми промежутками и без

3) Передать те же переменные не просто в Word, но с созданием текста\(или вставкой).
Например, есть у меня заготовка вордовская типа

Я,______, заключаю контракт с ______.

Хотелось бы понять , как сделать чтобы переменные в ворде становились таким образом

Я,__переменная а, содержащая ФИО____ заключаю контракт с ____переменная,содержащая название организации____ на сумму____интовая переменная____.

И еще вопрос--если идет сумма на миллиарды, хватит ли типа integer??

Спасибо за внимание=-)).Надеюсб на вас, винградовцы=)

Репутация: нет
Всего: нет

Вывод инфы в Word довольно простая вещь.
Вот пример для твоей задачи.

Код

Procedure InWord(a,b:Integer; c:String);
Var WordApp,WordDoc:Variant;

Begin
Try
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=False;

WordApp.Selection.ParagraphFormat.Alignment:=1;
WordApp.Selection.Font.Bold:=True;
WordApp.Selection.Font.Size:=20;
WordApp.Selection.Font.Color:=clBlue;
WordApp.Selection.TypeText('Я заключаю контракт с');
WordApp.Selection.TypeText(с);
WordApp.Selection.TypeParagraph;
WordApp.Selection.TypeText(IntToStr(a));
WordApp.Selection.TypeText(с);

finally
If not VarIsEmpty(WordApp) Then WordApp.Visible:=True;
WordApp:=Undisigned;
WordDoc:=Undisigned;
End;

Цитата

Я,__переменная а, содержащая ФИО____ заключаю контракт с ____переменная,содержащая название организации____ на сумму____интовая переменная____.

Ни фига себе контракты.

Тип Промежуток
Integer –2147483648..2147483647
Cardinal 0..4294967295
Shortint –128..127
Smallint –32768..32767
Longint –2147483648..2147483647
Int64 –2^63..2^63–1
Byte 0..255
Word 0..65535
Longword 0..4294967295

Репутация: нет
Всего: 0

Ну контракты в беларуских рублях, так что миллиард это всего навсего 455 тыс баксов=). Поверь,для банка это средний контракт=).
И сразу вопрос---как инфу сохранить в MS Access + реализовать по ней поиск(по фамилии и точной сумме кредита?=))

Репутация: нет
Всего: 0

Да,забыл сказать. Именно в Аксесс --не обязательно. Главное требование-прога должна работать без требований к компу кроме винды и оффиса.
Возмоожно даже нету у нас Аксесса, завтра гляну. Так что мона и др варианты=)
Например, таскание с прогой файлика не является проблемой, а вот через SQL--уже проблема,ибо она,насколько знаю, без сервака не пашет=)

Репутация: нет
Всего: нет

Мда, сдался тебе этот Access. Если даннных не так много, то можно хранить хоть в текстовом файле. Это в случае пары тысяч записей, иначе конечно лучше использовать БД, благо в delphi поддержка их нормальная. Но это двумя словами не расскажешь.
Для текстового файла код можно примерно такой.

Код

Procedure VstavkaVKonec(a,b,c:String);
Var f:TextFile;
Begin
AssignFile(f,'c:\Data.txt');
Append(f);
WriteLn(f,a);
WriteLn(f,'Text'); <>
Write(f,b); Write(f,c); <>
Close(f);
End;

Соответственно при поиске открываем файл для чтения
Reset(f);

Считываем данные
ReadLn(f,a);
Read(f,a);
сравниваем с параметром поиска, если удовлетворяет, то выводим.

Репутация: 8
Всего: 71

Репутация: нет
Всего: 8

Если вы делаете софт для автоматизации договоров, то лучше передавать в Ворд только изменяемые данные, а постоянные хранить в шаблоне.
Лучше всего для этой цели использовать закладки в Ворде. Таким образом у вас будет шаблон, с текстом договора, а в местах куда надо подставить данные будут стоять закладки. Программа на основе шаблона делает новый документ, пробегает по закладкам подсовывает данные и сохраняет/печатает - контракт готов. Как все это реализовать, тут на форуме где-то было подробно написано. Рекомендую использовать именно шаблону, так как если необходимо внести изменения в договор (например у вас управляющий поменялся, поле _в_лице. _) то не надо лезть в код, пользователь сам изменит шаблон и не будет (скорее всего) отвлекать вас для внесения изменений в программу.
Сохранение и поиск в базе данных это другой вопрос. Сначала выберите базу в которой будете хранить данные, затем все остальное. Но это тоже не сложно.
Клиент может работать даже если Access не установлен на компьютере.

Репутация: нет
Всего: 0

Текстовик не подходит, СЛИШКОМ много записей накопиться уже за 5 месяцев работы=)

Насчет закладок в Ворде-если мона поподробнее

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

[ Время генерации скрипта: 0.1316 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Каким образом можно понять какие переменные прописаны в docvariable.

Сколько и какие переменные и с какими значениями. Это где-нибудь видно?

Макросом можно ли вывести все переменные docvariable в текст (имя и значение)?

2 Ответ от yshindin 18.12.2016 21:27:35

Каким образом можно понять какие переменные прописаны в docvariable.
Сколько и какие переменные и с какими значениями. Это где-нибудь видно?
Макросом можно ли вывести все переменные docvariable в текст (имя и значение)?

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

Sub DocVars() Dim i As Long For i = 1 To ActiveDocument.Variables.count Sub DocVars() Dim i As Long For i = 1 To ActiveDocument.Variables.count Debug.Print ActiveDocument.Variables(i).Name & " postfoot">

3 Ответ от yshindin 18.12.2016 21:36:03

. . .
Вот пример - выдать в отладочной печати все переменные документа.
. . .

Прошу прощения, лишние строки затесались
Вот правильный код.

Sub DocVars() Dim i As Long For i = 1 To ActiveDocument.Variables.count Debug.Print ActiveDocument.Variables(i).Name & _ " postfoot">

4 Ответ от tna 18.12.2016 21:46:18

Почему то не выводит на экран (

5 Ответ от yshindin 18.12.2016 23:10:17

Почему то не выводит на экран (

VBA выводит это в область Immediate среды отладки. Перейдите в среду VBE (Alt+F11), отобразите область Immediate, затем запустите макрос.

6 Ответ от yshindin 18.12.2016 23:14:38

Почему то не выводит на экран (

Впрочем, если в документе еще нет переменных, то ничего не будет выведено.
Попробуйте такой код:

Sub DocVars() Dim i As Long ActiveDocument.Variables.add name:="FirstVariable", Value:="Any value" For i = 1 To ActiveDocument.Variables.count Debug.Print ActiveDocument.Variables(i).name & _ " postfoot">

7 Ответ от tna 19.12.2016 07:38:32

работает предпоследний макрос

Sub DocVars()
Dim i As Long
For i = 1 To ActiveDocument.Variables.count
Debug.Print ActiveDocument.Variables(i).Name & _
" //pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

8 Ответ от Boris_R 19.12.2016 11:31:44

Очень удобную надстройку, позволяющую работать с переменными документа, закладками и свойствами (Word Variables, Bookmarks and Properties editor add-in for Word 2007 - 2016), которую разработал Graham Mayor (ник на англоязычных сайтах - gmayor) можно скачать отсюда:
внешняя ссылка

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

9 Ответ от tna 19.12.2016 12:00:21

Спасибо, но у меня 2003 (

10 Ответ от tna 20.12.2016 08:32:59

После танца с бубном удалось подключить к 2003. Очень удобная надстройка. Еще раз спасибо.

11 Ответ от tna 20.12.2016 08:36:56

Вопрос решен. Тема закрыта Всем спасибо.

Похожие темы

Переменные docvariable

Для тех, кто хочет превратить процесс создания, проверки и редактирования, оформления и форматирования текстов из рутины и нудной механической работы в удовольствие, существует прекрасная возможность перенять приемы по автоматизации работы в Ворде, а также познакомиться с тонкими и редко используемыми настройками приложения на форуме сайта Ворд Эксперт. На портале о Microsoft Office Word вы узнаете про: как в верде сделать рамку.

На форуме обсуждаются любые вопросы, связанные с программой. В первую очередь это написание всевозможных макросов и шаблонов для тех, либо иных операций. На портале о Microsoft Office Word вы узнаете про: как сделать чтобы в worde таблицы не прыгали. Участники делятся секретами настроек приложения, оптимизации своей работы, предлагают готовые решения или схемы, по которым можно разработать решения самому. На портале о Microsoft Office Word вы узнаете про: повторить введённый текст. Также в специальном подфоруме есть возможность оставить заявку с описанием своей проблемы.

Есть ли способ перечислить все переменные документа в документе MS Word и их значения, чтобы можно было просмотреть их при использовании их в документе? (Я работаю над MS Office 2010)

2 ответа

Места, которые вы можете посмотреть в Word 2010 (здесь нет переменных документа) .

некоторые встроенные свойства

Для всего остального вам, вероятно, придется искать в XML в .docx. Для этого сделайте копию своего документа. Скажем, копия называется mydoc.docx. Переименуйте это в mydoc.docx.zip, откройте zip, а затем найдите несколько вещей, как предлагается ниже .

а. true Document Variables хранятся в папке слов в файле settings.xml в элементе w: docVars. Вы должны увидеть имя и значение для каждой переменной. Вы можете вставить значения Document Variables в свой документ с помощью поля .

У меня была аналогичная проблема. Некоторые сторонние панели инструментов сбой, и мне нужно было установить значение переменной.

Это немного грубо, но вот код VBA, который я выбил, перечисляет все переменные в коллекции ActiveDocument.Variables ;

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

Похожие вопросы

Популярные теги

Ключевым в объектной модели Word является объект Application, так как он содержит все остальные объекты Word. Его элементами на разных уровнях иерархии являются около 180 объектов. Сам корневой объект Application имеет более сотни элементов: свойств, методов и событий.

Свойства объекта Word.Application

Свойства любого объекта делятся на две группы: свойства-участники (объекты) и терминальные свойства (обычные переменные VBA).

Единую систему организации панелей меню и инструментальных кнопок обеспечивает объект CommandBars, справок – Assistant, поиска – FileSearch.

Центральными объектами Word являются коллекции Documents и Templates, точнее составляющие их элементы, сам документ и шаблоны.

Рассмотрим объекты второго плана.

Объект AutoCorrect поддерживает работу по автоматической коррекции набираемых текстов. Его возможности эквивалентны команде Автозамена меню Сервис.

Объект Browser позволяет перемещать точку вставки, указывающую на объекты в документе.

Коллекция объектов Dialogs представляет совокупность диалоговых окон, встроенных в Word. Добавлять новые или удалять элементы этой коллекции программным путем нельзя. Но соответствующие окна можно открыть и показать на экране дисплея и тем самым организовать диалог пользователем по теме, заданной соответствующим окном.

Три объекта, связанные с проверкой грамматики и орфографии: Languages, Dictionaries, SpellingSuggestions, – позволяют установить нужный язык, выбрать словарь, в том числе пользовательские словари, а также работать со списком слов, предлагаемых для исправления при обнаружении ошибки правописания. Команды Правописание и Язык меню Сервис предоставляют аналогичные, функциональные возможности при работе с документом вручную.

С помощью объекта Options можно программным путем установить различные опции приложения и документа аналогично тому, как если бы вы выбрали команду Параметры в меню Сервис.

Работа с документами и класс Document

Когда открывается приложение, создается коллекция документов Documents, содержащая все открытые документы. В начальный момент коллекция содержит минимум один новый или ранее существовавший документ. Новый документ добавляется методом Add, а уже существующий – методом Open объекта Documents. Чтобы добраться до нужного документа, достаточно указать его индекс – имя файла, хранящего документ, или его порядковый номер в коллекции. Для той же цели можно использовать и метод Item, но обычно он опускается. Метод Save позволяет сохранить документ, а метод Close, сохраняя документ в файле, закрывает его и удаляет из коллекции.

Глобальное свойство Dialogs возвращает коллекцию диалоговых окон. Константа wdDialogFileOpen задает конкретное диалоговое окно – объект класса Dialog.

Классы, задающие структуризацию текста документа

Текст – это основа большинства документов. Его можно структурировать, оперируя различными единицами при решении тех или иных задач преобразования. Минимальной единицей текста обычно является символ. Кроме этого, существуют следующие единицы: слова, предложения, абзацы, а также более крупные образования: страницы, параграфы, главы.

Классы Characters, Words, Statements, Paragraphs, Sections позволяют работать с последовательностями (коллекциями) символов, слов, предложений, абзацев и разделов. Самой крупной единицей после абзаца выступает раздел. Элементом коллекций Characters, Words и Statements является объект класса Range. Объект Range позволяет работать как с одним элементом, так и с произвольной последовательностью элементов. Документы, поддокументы, абзацы, разделы – все они имеют метод или свойство Range, возвращающее интервал, связанный с объектом. Поэтому работа с текстом так или иначе ведется через методы и свойства объекта Range.

События объекта Document

Объект Document может реагировать на три события, возникающие в результате действий пользователя.


События объекта DocumentДокумент и его части

Рассмотрим основные классы, определяющие структуру документа.

1. Subdocuments (Subdocument) – коллекция и сам поддокумент. Есть некоторый разумный предел размера одного документа. Если в документе больше 10–20 страниц, работать с ним становится неудобно. В этом случае в нем выделяют главный документ и поддокументы. Главный документ в этом случае имеет коллекцию поддокументов, каждый из них является, по сути, документом, с которым можно работать независимо.

Метод AddFromRange класса SubDocuments создает поддокумент, выделяя из главного документа область, заданную параметром Range.

3. Shapes(Shape), InlineShapes(InlineShape) – эти две коллекции с их элементами позволяют добавлять в документ рисунки, но не только их. ActiveX– и OLE-объекты также являются элементами этих коллекций. Элементы этих двух коллекций отличаются тем, как они привязаны к документу: первые могут свободно перемещаться, вторые жестко привязаны к заданной области документа.

5. Comments(Comment), Bookmarks(Bookmark), FootNotes (FootNote), EndNotes(EndNote), Fields(Field) – эти коллекции и их элементы отражают независимые, но близкие по духу понятия. Это части документа, косвенно связанные с ним. При нормальном просмотре документа они могут быть и не видны.

• Коллекция comments и класс comment задают комментарии. Комментарии, как известно, вводятся для пояснения тех или иных терминов или понятий документа. Формально они приписываются некоторой области – объекту range.

• Большой документ, к отдельным частям которого приходится часто обращаться, стоит снабдить закладками. Коллекция bookmarks задает все закладки данного документа.

• Еще один способ комментирования – сноски. Они могут быть двух видов: подстраничные (внизу страницы) и концевые (в конце документа). Первые собраны в коллекцию footnotes, вторые – endnotes.

6. Fields (Field) – эта коллекция позволяет работать с полями документа. Одна из особенностей полей состоит в том, что их значения обновляются автоматически в зависимости от изменившихся внешних условий или контекста.

7. Story Ranges (Range) – эта коллекция представляет совокупность частей документа, называемых фрагментами (Story). Количество различных фрагментов документа фиксировано. Нельзя добавлять элементы в эту коллекцию обычным способом, используя метод Add. Фрагменты появляются в коллекции, когда создается соответствующая часть документа.

Фрагменты имеют тип, задаваемый константами из перечисления wdStoryType. Главный фрагмент – текст документа, тип которого задается константой wdMainTextStory. Комментарии, ссылки, колонтитулы составляют фрагменты других типов, т. е. сам фрагмент является объектом Range. Так что благодаря фрагментам можно, например, работать с коллекцией комментариев как с единой областью.

8. Variables (Variable) – с документом можно связать коллекцию переменных типа Variant. Это важная для программистов коллекция, так как время жизни переменных, в нее входящих, совпадает со временем жизни документа. Тем самым появляется возможность сохранять информацию о работе той или иной процедуры между сеансами. Например, можно иметь счетчики, подсчитывающие число вызовов макроса, и в зависимости от этого по-разному определять его дальнейшую работу.

Объекты Range и Selection

Объект Document имеет метод Range, возвращающий объект Range, и метод Select, создающий объект Selection. Метод Range – это функция, возвращающая как результат объект Range; метод Select – это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Объект Range имеет метод Select, превращающий область объекта Range в выделенную. Тем самым метод Select определяет новый объект Selection. Симметрично, объект Selection имеет свойство Range, возвращающее объект Range, соответствующий выделенной области.

Большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection.

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range:

Выделение

Выделить некоторую часть текста по существу означает определить объект Range или Selection. Объекты задают некоторую область в тексте документа, а их свойства Start и End позволяют установить начало и конец этой области. Меняя значения свойства, можно задать нужную область выделения.

Move является основным методом перемещения точки вставки. Остальные методы этой группы – в той или иной степени его модификации. Метод Move(Unit, Count) сжимает область в точку, стягивая ее в начало или конец, а затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, a Count – количество этих единиц (по умолчанию 1). Знак переменной Count задает направление стягивания и перемещения. Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные – стягивание в начало и перемещение назад. Чистое стягивание без перемещения точки вставки задается как перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.

Методы перемещения на сам текст не влияют – лишь изменяют область, заданную объектами Range и Selection. Поэтому эти методы применимы только к переменным типа Range, но не к фиксированным областям. Например, запись

не имеет эффекта, поскольку область первого абзаца – вещь неизменяемая. Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно тем самым расширяя область.

Удаление текста

Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection. Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count.

Вставка текста

Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр text типа string задает текст, вставляемый до или после области, заданной объектами range или selection. После вставки текста область автоматически расширяется, включая в себя добавляемый текст.

Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text). Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. Совсем иное дело – методы вставки, которые далеко не безопасны. При вставке внутрь области, например при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области.

Работа с буфером

Метод Сору, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод cut, действуя аналогично, должен бы заодно и удалять объект. Но сам объект не удаляется – только стягивается в точку, так что над ним возможны дальнейшие операции.

Иногда в буфер копируют не текст, а его формат. Этим занимается метод CopyFormat, копирующий формат по первому символу объекта selection. Если этот символ – метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект selection.

Sub Макрос1()

With Selection.ParagraphFormat

Selection.TypeText Text:="Работа с текстом:"

Selection.TypeParagraph

With

ListGalleries(wdBulletGallery).ListTemplates(1)._ListLevels(1)

End With

End With

ListGalleries(wdBulletGallery).ListTemplates(1).Name = ""

Selection.Range.ListFormat.ApplyListTemplate

ListTemplate:=ListGalleries(wdBulletGallery).ListTemplates(1), ContinuePreviousList:=False, ApplyTo:= _wdListApplyToWholeList, DefaultListBehavior:=wdWord10ListBehavior

Selection.TypeText Text:="урок"

Selection.TypeParagraph

Selection.TypeText Text:="экзамен"

Selection.TypeParagraph

Selection.TypeText Text:="сдал"

Selection.TypeParagraph

Selection.Range.ListFormat.RemoveNumbers

NumberType:=wdNumberParagraph

Selection.TypeParagraph

Selection.Font.Bold = wdToggle

Selection.Font.Italic = wdToggle

Selection.TypeText Text:="Работа завершена!"

Selection.WholeStory

Selection.Copy

Selection.PasteAndFormat (wdPasteDefault)

Selection.PasteAndFormat (wdPasteDefault)

End Sub

Наиболее важной особенностью работы на VBA в Word является вставка текста в документ при работе с приложениями. Для этого служат объекты Range и Selection, которые являются главными для практически любых операций, которые можно выполнять с помощью Word VBA. Некоторые из этих действий можно применять к документам в целом, но в общем случае вам необходим диапазон или выделенная область, прежде чем вносить изменения. Мы, однако, рассмотрим действия с документом при его создании.

Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, таблица, ячейка таблицы, комментарий и т. д. определяют диапазоны. Например, для того чтобы вставить некоторый текст в уже существующий документ, необходимо прописать код:

Причем данная строка будет расположена в конце существующего параграфа. С другой стороны, используя объект Selection, можно также вставить некоторый текст в документ, используя метод Add и присвоение свойства Text объекту Selection:

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