|
Не заполняет таблицу в word | ☑ | ||
---|---|---|---|---|
0
sidalexsandr
03.08.18
✎
15:18
|
Не заполняется таблица в word. Вот текст функции:
Функция Печать() Экспорт Word = Новый COMОбъект("Word.Application"); //получаем макет Макет = ПолучитьМакет("МакетWord"); ВременныйПуть = КаталогВременныхФайлов(); ИмяВременногоФайла = ВременныйПуть + "Пример ворд.doc"; Макет.Записать(ИмяВременногоФайла); ТекДок = Word.Documents.ADD(ИмяВременногоФайла); // Поиск и замена маркеров Замена = ТекДок.Content.Find; //Execute работает как замена текста, подробности метода не знаю, единственное и это точно - без цифры 2 заменяется только первый текст, вторая замена не срабатывает //Замена.Execute("[ВставкаИз1с]",,,,,,,,, "привет 1с", 2); Замена.Execute("%ОбществоООО%",,,,,,,,, СсылкаНаОбъект.Наименование, 2); Замена.Execute("%ОбществоОООГенДир%",,,,,,,,, СсылкаНаОбъект.Наименование, 2); ШаблонВорд = ТекДок; //Заполняем первую таблицу Если ШаблонВорд.Bookmarks.Exists("Таблица1") Тогда //Выделяем обязательную закладку начала таблицы ШаблонВорд.Bookmarks("Таблица1").Select(); //Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена ШаблонВорд.Application.Selection.MoveDown(); ШаблонВорд.Application.Selection.SelectRow(); ШаблонВорд.Application.Selection.Copy(); Для Счетчик = 1 По 10 Цикл //Заменяем значения ШаблонВорд.Application.Selection.Find.Execute("%Наим%" ,,,,,,,,,"Наим="+Счетчик,2); ШаблонВорд.Application.Selection.Find.Execute("%Сер%" ,,,,,,,,,Счетчик+10,2); //Перемещаемся вниз, вставляем из буфера обмена строку ШаблонВорд.Application.Selection.MoveDown(); ШаблонВорд.Application.Selection.Paste(); //Перемещаемся вверх и выделяем строку для замены значений ШаблонВорд.Application.Selection.MoveUp(); ШаблонВорд.Application.Selection.SelectRow(); КонецЦикла; //Вырезаем лишнюю строку ШаблонВорд.Application.Selection.Cut(); //Скрываем обязательную закладку начала таблицы ШаблонВорд.Bookmarks("Таблица1").Select(); ШаблонВорд.Application.Selection.TypeText(" "); КонецЕсли; // Вывод документа ТекДок.Application.Visible = Истина; ТекДок.Activate(); Сообщить("СсылкаНаОбъект = " + СсылкаНаОбъект); КонецФункции |
|||
1
sidalexsandr
03.08.18
✎
15:18
|
Заполнение идет в цикле Для Счетчик = 1 По 10 Цикл
|
|||
2
hhhh
03.08.18
✎
15:32
|
(1) а зачем вы 10 раз одно и тоже? после первого раза уже "%Наим%" нет нигде, зачем еще 9 раз проходить?
|
|||
3
sidalexsandr
03.08.18
✎
15:34
|
(2) Это для проверки выводится. Дальше будет заполнено реальными данными.
|
|||
4
sidalexsandr
03.08.18
✎
15:36
|
(2) Цикл должен выводить в строки таблицы Наим=1 Наим=2 Наим=3 и так далее
|
|||
5
s03
03.08.18
✎
15:58
|
(4) или в каждой строке свой параметр (в шаблоне), не общий "Наим", а "Наим1", "Наим2" и т.д. или добавляй строки программно и в этот момент их и заполняй
|
|||
6
hhhh
03.08.18
✎
16:02
|
(4) то что данный момент у тебя, ты выводишь 10 раз Наим=1
|
|||
7
sidalexsandr
03.08.18
✎
16:10
|
(5) Я сделал на основании примера из интернета, там было написано что в каждой строчке выводится значение переменной счетчик, которое постоянно увеличивается. Как программно добавлять строки и заполнять их?
|
|||
8
sidalexsandr
03.08.18
✎
16:58
|
Подниму
|
|||
9
sidalexsandr
06.08.18
✎
12:57
|
up
|
|||
10
bolobol
06.08.18
✎
13:36
|
MSDN в помощь
|
|||
11
sidalexsandr
06.08.18
✎
14:50
|
(10) Шутиш?
|
|||
12
sidalexsandr
06.08.18
✎
14:54
|
(10) Это Микрософтоская библиотека тех документации. А мне надо знать где я программе написал с ошибкой.
|
|||
13
sidalexsandr
06.08.18
✎
16:32
|
up
|
|||
14
sidalexsandr
07.08.18
✎
14:03
|
Подниму
|
|||
15
Deon
07.08.18
✎
14:09
|
Так а что не заполняется-то? Таблица не создается или данных в ней нет?
|
|||
16
sidalexsandr
07.08.18
✎
14:34
|
(15) Таблица есть, но данных в ней нет.
Выводится только одна строчка 1 %Наим% %Сер% |
|||
17
Deon
07.08.18
✎
15:04
|
(16) А ты в своем шаблоне Закладку перед таблицей точно поставил?
|
|||
18
sidalexsandr
07.08.18
✎
15:25
|
(17) В документе word выделяю таблицу и правой кнопкой мыши->вставить название и даю имя Таблица 1
|
|||
19
Deon
07.08.18
✎
15:31
|
(18) Не, у тебя же в коде "ШаблонВорд.Bookmarks"
Bookmarks - это закладки. Встань перед таблицей и жамкай Вставить - Закладки. Имя закладки "Таблица 1" |
|||
20
sidalexsandr
07.08.18
✎
15:43
|
(19) Спасибо. Теперь выдает ошибку:
Ошибка при вызове метода контекста (SelectRow): Произошла исключительная ситуация (Microsoft Word): Метод или свойство SelectRow недоступны, потому что некоторые или все объекты не ссылаются на таблицу. |
|||
21
Deon
07.08.18
✎
15:45
|
(20) Ну вот теперь можно начинать пользоваться Отладчиком
|
|||
22
sidalexsandr
07.08.18
✎
15:59
|
(21) Можно подробнее?
|
|||
23
sidalexsandr
07.08.18
✎
16:01
|
Закомментировал //ШаблонВорд.Application.Selection.Find.Execute("%Наим%" ,,,,,,,,,"Наим="+Счетчик,2);
//ШаблонВорд.Application.Selection.Find.Execute("%Сер%" ,,,,,,,,,Счетчик+10,2); Все равно ошибка (20) |
|||
24
Deon
07.08.18
✎
16:07
|
У тебя закладка должна стоять в строке над таблицей.
Ибо у тебя в коде написано - выбрать закладку, потом спуститься на строку вниз и выделить строку таблицы |
|||
25
sidalexsandr
07.08.18
✎
16:09
|
Ошибка в верхнем SelectRow
|
|||
26
Deon
07.08.18
✎
16:15
|
(25) Потому что у тебя курсор не попал в таблицу
|
|||
27
sidalexsandr
07.08.18
✎
16:16
|
А почему не попал?
|
|||
28
Deon
07.08.18
✎
16:25
|
(27) Потому что ты закладку не туда поставил в шаблоне
|
|||
29
sidalexsandr
07.08.18
✎
16:30
|
(28) Я выделил таблицу. Далее в ворде вставка ->Закладка
|
|||
30
sidalexsandr
07.08.18
✎
16:31
|
А вот это правильно
ТекДок = Word.Documents.ADD(ИмяВременногоФайла); ШаблонВорд = ТекДок; //Заполняем первую таблицу Если ШаблонВорд.Bookmarks.Exists("Таблица1") Тогда ? |
|||
31
Fram
07.08.18
✎
16:32
|
(29) ты ветку по диагонали читаешь что ли? Что тебе в (24) написали?
|
|||
32
sidalexsandr
07.08.18
✎
16:36
|
(31) Спасибо. Попробую
|
|||
33
sidalexsandr
07.08.18
✎
16:39
|
(31) Спасибо. Заработало но не совсем верно. Выделяет и копирует не вторую строчку, а первую. Как сделать чтобы копировалась и заполнялась вторая строчка?
|
|||
34
sidalexsandr
07.08.18
✎
16:44
|
Написал ШаблонВорд.Application.Selection.MoveDown();
ШаблонВорд.Application.Selection.MoveDown(); ШаблонВорд.Application.Selection.SelectRow(); ШаблонВорд.Application.Selection.Copy(); Теперь выводится с первой строки, но выводятся только нечетные строки (через строку) |
|||
35
sidalexsandr
07.08.18
✎
16:46
|
Почему через строку? Ведь ШаблонВорд.Application.Selection.MoveDown();
ШаблонВорд.Application.Selection.MoveDown(); ШаблонВорд.Application.Selection.SelectRow(); ШаблонВорд.Application.Selection.Copy(); стоит в не цикла. |
|||
36
sidalexsandr
07.08.18
✎
17:24
|
Переформулирую. Как сделать, чтобы копировалась вторая строка таблицы затем заполнялась и добавлялась вниз таблицы?
|
|||
37
sidalexsandr
08.08.18
✎
11:45
|
Подниму
|
|||
38
sidalexsandr
08.08.18
✎
12:25
|
(36) Up
|
|||
39
sidalexsandr
27.08.18
✎
13:41
|
(36) Вопрос ещё актуален
|
|||
40
sidalexsandr
28.08.18
✎
10:27
|
(36) Подниму
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |