Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Специальные символы в свойствах Word

Здравствуйте.

Для автоматизации документа использую дополнительные поля Word, которые доступны по пути Файл – Сведения – Свойства – Дополнительные свойства – Прочие.

Например, поле { DOCPROPERTY "Пример" \* MERGEFORMAT } выдаст текст, вложенный в поле Пример, конкретно «Текст примера».

Можно ли в это дополнительное свойства вставить разрыв строки или подобный символ форматирования (табуляция, разрыв абзаца, разрыв раздела)? Например, поле { DOCPROPERTY "Тема работы" \* MERGEFORMAT } выдаёт только текст с пробелами «Тема работы РАЗРЫВ СТРОКИ продолжение темы работы». Ни Enter, ни Shift+Enter не оказывают никакого полезного влияния.

Знаю, что в окне «Найти и заменить» эти служебные символы форматирования можно находить и менять, например, разрыв строки – «^l» без кавычек, а разрыв страницы «^m» . Пробовал с различными комбинациями слешев и кавычек – не помогло. Самый простой вариант – скопировать символ разрыва строки не работает.
Ответ:
Сообщение от nagoduvi
Увы, не всё так просто. Новый скрин - на нём видно разницу. Но глубже символа пола я тоже не придумал.
Это непечатный символ
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
    <property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="Test">
        <vt:lpwstr>s1_x000b_s2</vt:lpwstr>
    </property>
</Properties>
вертикальной табуляции U+000B.

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

Добавлено через 25 минут
В макросах можно добавить заменой вашего маркера, например #, на Chr(11).
Вручную - через сторонние плагины, типа DocTools DocPropertyManager:
You can insert line breaks and new paragraphs in the value of custom document properties
---
Вы можете вставлять разрывы строк и новые абзацы в значение свойств настраиваемого документа
Добавлено через 1 минуту
Или распаковкой zip архива документа, изменением показанного выше XML тега, и запаковкой обратно.
Вопрос: Как написать макрос для документа Word - 2007 с нужными параметрами дат

Специалисты, HELP! В текстовый документ (бланк страхового полиса) нужно сделать кнопку в определенном месте (правый верхний угол), там, где ставится дата составления документа (возможно, текущая, а может и днем вперед). Кнопка должна отображать окно выбора даты - как в системном трее. После выбора нужной даты (щелчком мыши по ней) в поле она должна отобразиться в формате, например { 01 сентября 2015 г. }. После того, как эта дата отобразится, в других (заранее указанных местах создаваемого шаблона), относительно этой - исходной даты, надо, чтобы автоматически отобразились даты: 1) этот же день; 2) +1 день; 3) + 1 год 4) +1 год и минус 1 день. Помогите написать макрос!!! А может быть, умные люди уже создали?! Где поискать?
И ещё задачка: если набрать в определенном поле этого документа (графа ФИО), например { Иванов Пётр Сидорович }, то как сделать, чтобы в другом поле автоматически записалось { Иванов П. С. }?
Заранее благодарен тем, кто способен на эффективную помощь!
Ответ:
Сообщение от User U
Специалисты
вашей «компьютеризированной» страховой, возможно, почерпнут подход отсюда (что касается инициалов): .
24 человека, как минимум, ознакомилось с примером: (хоть там Dimon0907 и не проявил понимания).

А вот пример обращения с полями ViterAlex’а: (висит где-то и чудесное поле-колбаса с датой завтра и через год).
Вопрос: Макрос в Word, копировать информацию с 1 файла в другой

Здравствуйте, есть 2 разных вордовских файла, но там и там есть поле ФИО, мне нужно с помощю макроса вытянуть ФИО с файла (1) и скопировать в текущий в поле ФИО, и так еще парочку полей, как это можно сделать, помогите пожалуйста...
Ответ: У меня есть заявка для клиента, в форме таблицы с лева "ФИО", с права клиент пишет свое ФИО, хочу я вытянуть ФИО клиента и поместить в другой уже готовый документ (Инвойс), само поле куда будет вводить клиент свое фио, и поле в инвойсе каким скажете таким и сделаю, лиш бы при печати оно не отличалось от обычного ввода...
Вопрос: Слияние Word и Excel, заполнение Шаблона

Добрый день. Есть шаблон Word, в котором есть поля, такие как "форматированный текст" и раскрывающийся список. Раскрывающихся списка 2 и их нужно связать. Например из списка выбираешь начальника какого то, и в другое поле автоматически подставляется список с подчиняющимися ему отделами. В экселе сделал лист, где для каждого руководителя сделал раскрывающийся список с подчиняющимися ему отделами. Но вот как сделать так, что при выборе именно отдела, подставлялся руководитель? Может это сделать через слияние Word и Excel?
Ответ: ваш же пароль даже не взламывала --открылся сам

Добавлено через 16 минут
извиняюсь не полностью, не все дает делать

Добавлено через 11 минут
работает только с лицензионным WORD

Знакомство со службой управления правами на доступ к данным

Служба управления правами на доступ к данным (1КМ) использует сервер для проверки учетных данных пользователей, создающих или получающих документы и сообщения электронной почты с ограниченными разрешениями. Некоторые организации используют собственные серверы управления правами. Пользователям М1сго$оЛ Оббсе, не имеющим доступа к таким серверам, корпорация Майкрософт предлагает воспользоваться бесплатной версией службы управления правами на доступ к данным.

Перед началом работы с этой бесплатной службой ознакомьтесь со следующими условиями:

- для работы с этой службой необходимо использовать идентификатор Мпйо’л-з Цуе ГО;

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

- если корпорация Майкрософт решит прекратить действие этой службы, получатели будут по-прежнему иметь доступ к документам и сообщениям электронной почты в течение по крайней мере трех месяцев, если их идентификаторы Мпйо'Л’З Шуе ГО остаются активными;

- корпорация Майкрософт не будет расшифровывать содержимое, защищенное этой службой, ни в каких случаях, кроме как по действительному решению суда.
Вопрос: Использование компонентов ActiveX в Word

В документе Word есть тест с вариантами ответов, который создан с помощью ActiveX. То есть нужно поставить галку напротив правильного ответа в соответствующее поле. Однако это не получается.

Как разрешить или включить этот компонент? Спасибо.
Ответ:
Цитата Сообщение от m_al_vl Посмотреть сообщение
Что надо разрешить
Макросы.
Вопрос: Перекрестные ссылки в Word 2010

Пытаюсь воспользоваться штатными средствами создания перекрестной ссылки на рисунки. Все подписи к рисункам размечены одним стилем. Выбираю Тип ссылки - Рисунок. Но в поле Для какого названия список рисунков не появляется и команда Вставить неактивна. Хотя для разделов и абзацев все ОК. В чем тут загвоздка?
Ответ:
Сообщение от bnn-ua
Сообщение от Almiqui
это было почти год назад 21.09.2010, 10:12
Almiqui, так а что в этом такого?
Сообщение от Almiqui

Не по теме:

вопросов бы не возникло

Как вообще тема перекрёстных ссылок* может прогнить, устареть и завоняться?! Это ж не рыба, не мумия…

_________________
* ну да, да, в Word 2010, но менять Word 2003 (и моложе) на новорождённые (2016 и т. д.) — себе дороже
Вопрос: Перенос из excel в word

Здравствуйте всем. Мне нужна помощь. Я не могу понять как добавить выделенное поле из документа Excel в документ Word. У меня получается все поля или таблицу, в один или несколько файлов. Но с выделенной ячейкой не могу. Помогите пожалуйста.
Ответ: Блин, неужели ни кому не нужно было добавлять в документ word, только выделенные поля или ячейки из документе excel.
Вопрос: Вставлять ссылки из Excel в Word

всем привет! записал нехитрый макрос, который позволяет вставлять ссылки из Excel в Word. все работает на "ура", но иногда начинает непонятно моргать курсор. пока не перезапустишь документ, моргание не прекращается. никто не сталкивался с подобной траблой?

Добавлено через 7 часов 16 минут
и еще: как сменить источники для всех ссылок, не тыкая каждый раз?
Ответ: Методами проб и ошибок =)))))))))

LINK Excel.SheetMacroEnabled.12 C:\\Users\\User\\Desktop\\Договоры\\Данные.xlsm 01!R39C10 \a 4\r \*Charformat

Думаю, разберетесь =)))))

Добавлено через 6 минут
Моргание курсора??? Это OLE. Ошибку их взаимодействия Майкрософт по сути еще так и не пофиксил. Я тупо установил один курсор на все случаи жизни =)))))))))))). Это спустя какое-то время начинает нервировать.
Ну и Еще, взял за правило, что если надо поработать с полями, я
а) открою документ ворд, обновлю сразу поля,
б) скопирую в новый файл, заменив поля их значениями (я макросом, в инете дофига таких)
в) закрываю сразу же эту ересь с полями
---Иначе спустя 10 минут комп начинает на 3-5 минут виснуть, что для работы неприемлево.
---Даже если отключить макросом обновление всех полей в документе комп не перестанет зависать и "моргать курсором", это неизлечимо.
---За решение всех вышеописанных проблем я готов заплатить тыщ пять, только никто это не сделает. Эти твари из Майкрософт помоему спецом так сделали, чтобы 10 полей тупили каждые пол часа, "обновляясь" друг с другом. Сколько моих нервов сожрано.
----Ах да, если вы работаете с полями, лучше 1-3 документов не открывать, и систему вообще не нагружать. У меня стандартно - 1 раз в день падает ворд. Но открывтаь по 1-3 документа не получается, некоторые из них с полями. А без полей никак, не успеешь по объему работы.

Источники для всех ссылой - CTRL+F9 и просто тупо заменой по всему тексту, вообще особо не заморачиваясь всё поменяет.
Вопрос: Выпадающие списки в word 2010, как их связать

Добрый день.
Скажите, пожалуйста, как сделать в worde два связанных выпадающих списка?
Как сделать выпадающий список, я понял. (разработчик, элементы управления, поле со списком (в св-вах заполняю его))
Делаю два списка, но связать их не могу.
Мне необходимо, чтобы при выборе одного параметра в первом списке во втором появлялась возможность выбирать только определенные параметры, а не все.
Табл 1:
Россия
Испания
Англия
Таблица 2:
Москва
Ростов
Барселона
Мадрид
Лондон
Кардиф

К Россия в первой таблице относится только Москва и
Ростов. Мне нужно чтобы при выборе параметра Россия в первой выпадающей таблице, он давал выбрать во второй таблице только Москва и Ростов.
Необходимо, чтобы все остальные строки листа можно было редактировать.
Так как эта форма далее пойдет на печать. Спасибо за помощь.
Ответ: Та же беда, в excel проблем вроде как нет, а как в word'e сделать никто не говорит((
Вопрос: Макрос. Экспорт из Excel в Word

Всем привет! Люди грамотные, помогите, или направьте в нужное русло. Я прежде макросы не писал. Стоит MS Office 2013. В общем, нужно сделать так: дан шаблон в Word "бланк закрытия контракта", и дана огромная таблица в Excel (более тысячи записей). Нужно создать документы Word для каждой записи (да! более тысячи документов!), то есть вставляя данные из определенных полей таблицы Excel в определенные места шаблона Word (поля Номер договора, Дата начала, Контрагент, Дата окончания). Затем каждый файл Word нужно сохранить под именем, которое берется из соответствующей строки поля Контрагент.
P.S. Не обязательно использовать макросы. То есть не важно как, главное результат. Например, можно использовать MS Visual Studio 2015.
Ответ: Жаль, что тут не помогли. В общем, я написал программу в Visual Studio Community 2015. Может кому то пригодиться. Тема закрыта. (хотя все еще можете написать макрос и выложить).
Сперва добавляем ссылку Interop word и Excel. А вот и сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string TemplateFileName = @"c:\WordDocs\БЛАНК ЗАКРЫТИЯ КОНТРАКТА.doc";
        private readonly string ExcelFileName = @"c:\WordDocs\Файл Excel.xlsx";//***
        private void button1_Click(object sender, EventArgs e)
        {//b-номер договора, c-дата нач, d-компания, e-дата оконч, name-имя файла .doc
            string[] b = new string[2000];
            string[] c = new string[2000];
            string[] d = new string[2000];
            string[] ee = new string[2000];
            string[] name = new string[2000]; string noname = "";
            string[] mmstart = new string[2000];//month
            string[] mmend = new string[2000];
            string[] ddstart = new string[2000];//day
            string[] ddend = new string[2000];
            string[] yystart = new string[2000];//year
            string[] yyend = new string[2000];
            string[] monthStart = new string[2000];//month name
            string[] monthEnd = new string[2000];
            int i = 0;
            var ExcelApp = new Excel.Application(); //Data Range: B4 - E1196 (1193)
            ExcelApp.Visible = false;
            try
            {
            //string a = Convert.ToString(ExcelApp.Range["D6"].Value);
            for (i = 0; i < 147; i++)//***1193
                {
                    
                    var exceldocument = ExcelApp.Workbooks.Open(ExcelFileName);
                    var wordapp = new Word.Application();
                    wordapp.Visible = false;
                    var worddocument = wordapp.Documents.Open(TemplateFileName);
                    int j = i + 2;//***4
                    b[i] = Convert.ToString(ExcelApp.Range["a" + j].Value);//***b
                    d[i] = Convert.ToString(ExcelApp.Range["b" + j].Value);//***d
                    noname = d[i];
                    for (int k = 0; k < noname.Length; k++)
                    {
                        char l = noname[k];
                        if (l != '"' && l != '\\' && l != '/' && l != ':' && l != '*' && l != '\0' && l != '?' && l != '>' && l != '<' && l != '|')
                            name[i] = name[i] + l;
                        else
                            name[i] = name[i] + " ";
                    }
                    c[i] = Convert.ToString(ExcelApp.Range["d" + j].Value);//***c
                    ee[i] = Convert.ToString(ExcelApp.Range["e" + j].Value);
                    //mmstart[i] = Convert.ToInt32(c[i][0]);
                    //mmend[i] = Convert.ToInt32(ee[i][0]);
                    char[] splitter = { '/' };
                    string[] splitInt = new string[3];
                    splitInt = c[i].Split(splitter);
                    string[] splitArray = new string[3]; j = 0;
                    foreach (string s in splitInt)
                    {
                        splitArray[j] = s;
                        j++;
                    }
                    //textBox1.Text = splitInt[0];
                    mmstart[i] = splitArray[0];
                    ddstart[i] = splitArray[1];
                    yystart[i] = splitArray[2];//not real (only year)
                    string[] splitInte = ee[i].Split(splitter);
                    string[] splitArray2 = new string[3]; j = 0;
                    foreach (string s in splitInte)
                    {
                        splitArray2[j] = s;
                        j++;
                    }
                    mmend[i] = splitArray2[0];
                    ddend[i] = splitArray2[1];
                    yyend[i] = splitArray2[2];//nor real (only year)
                    string[] ystart = new string[2000];//real
                    string[] yend = new string[2000];//real
                    for (j = 0; j < 4; j++)
                    {
                        ystart[i] = ystart[i] + yystart[i][j];
                        yend[i] = yend[i] + yyend[i][j];
                    }
                    if (mmstart[i] == "1") monthStart[i] = "Января";
                    if (mmstart[i] == "2") monthStart[i] = "Февраля";
                    if (mmstart[i] == "3") monthStart[i] = "Марта";
                    if (mmstart[i] == "4") monthStart[i] = "Апреля";
                    if (mmstart[i] == "5") monthStart[i] = "Мая";
                    if (mmstart[i] == "6") monthStart[i] = "Июня";
                    if (mmstart[i] == "7") monthStart[i] = "Июля";
                    if (mmstart[i] == "8") monthStart[i] = "Августа";
                    if (mmstart[i] == "9") monthStart[i] = "Сентября";
                    if (mmstart[i] == "10") monthStart[i] = "Октября";
                    if (mmstart[i] == "11") monthStart[i] = "Ноября";
                    if (mmstart[i] == "12") monthStart[i] = "Декабря";//
                    if (mmend[i] == "1") monthEnd[i] = "Января";
                    if (mmend[i] == "2") monthEnd[i] = "Февраля";
                    if (mmend[i] == "3") monthEnd[i] = "Марта";
                    if (mmend[i] == "4") monthEnd[i] = "Апреля";
                    if (mmend[i] == "5") monthEnd[i] = "Мая";
                    if (mmend[i] == "6") monthEnd[i] = "Июня";
                    if (mmend[i] == "7") monthEnd[i] = "Июля";
                    if (mmend[i] == "8") monthEnd[i] = "Августа";
                    if (mmend[i] == "9") monthEnd[i] = "Сентября";
                    if (mmend[i] == "10") monthEnd[i] = "Октября";
                    if (mmend[i] == "11") monthEnd[i] = "Ноября";
                    if (mmend[i] == "12") monthEnd[i] = "Декабря";
                //textBox1.Text = textBox1.Text + name[i] + "\r\n";
                replace("{contract}", b[i], worddocument);
                    replace("{daystart}", ddstart[i], worddocument);
                    replace("{dayend}", ddend[i], worddocument);
                    replace("{dayend}", ddend[i], worddocument);
                    replace("{dayend}", ddend[i], worddocument);
                    replace("{monthyearstart}", (monthStart[i] + " " + ystart[i]), worddocument);
                    replace("{monthyearend}", (monthEnd[i] + " " + yend[i]), worddocument);
                    replace("{monthyearend}", (monthEnd[i] + " " + yend[i]), worddocument);
                    replace("{monthyearend}", (monthEnd[i] + " " + yend[i]), worddocument);
                    replace("{company}", d[i], worddocument);
                    worddocument.SaveAs2(@"C:\WordDocs\Contracts2" + (i + 1) + " " + name[i] + ".doc");//***Contracts
                    wordapp.Quit();
                    ExcelApp.Quit();
                    textBox1.Text = Convert.ToString(i + 1) + " of 147";//***1193
                }
            }
            catch
            {
                MessageBox.Show("Error");
            }
 
            finally
            {
                MessageBox.Show("Done!");
            }
        }
        private void replace(string toreplace, string text, Word.Document worddocument)
        {//my method for replacement
            var range = worddocument.Content;
            range.Find.ClearFormatting();
            range.Find.Execute(FindText: toreplace, ReplaceWith: text);
        }
 
        
    }
}