Имя: Пароль:
 
1C
 
Чтение и запись таблицы WORD
0 ProgaN
 
17.02.10
08:45
Добрый день. Стоит задача - считать таблицу из файла WORD, сравнить построчно, добавить новый столбец, записать туда значение, выделить цветом. Помогите плиз. Нало есть:
Word.Documents.Open(ИмяФайла);
Word = Новый ComОбъект("Word.Application");
Документ = Word.ActiveDocument ();
Таблица = Документ.Tables.Item(1);
1 Ygich
 
17.02.10
08:48
что спросить то хотел? или хочешь чтобы все за тебя сделали?
2 чувак
 
17.02.10
08:50
// Устанавливаем жирный шрифт для шапки таблицы
Документ.Range( Таблица.Cell( Счетчик,!). Range.Start,
Таблица.Cell(Счетчик,4).Range.End).Font.Bold = Истина;
Для каждого Значение Из Объект[Параметр.Ключ] Цикл
Счетчик = Счетчик + 1;
// Заполняем содержимое таблицы
Попытка
Таблица.Cell(Счетчик,1).Range().InsertAfter(Значение.Имя);
Исключение
КонецПопытки;
3 Stim
 
17.02.10
08:58
(0)//ПРоцедура заполняет заранее созданую таблицу в Ворде. мож пригодится тебе

Процедура БольшаяКраснаяКнопкаНажатие(Элемент)
   // Вставить содержимое обработчика.
   АктивныйДокумент = ПолучитьМакет("Макет1");
   
   WordDoc = АктивныйДокумент.Получить();
   WordDoc.Application.Visible=1;
   Таблица = WordDoc.Tables.Item(1);
   
   запрос= Новый запрос();
   запрос.Параметры.Вставить("ДатаНачала",ДатаНачала);
   запрос.Параметры.Вставить("ДатаКонца",ДатаКонца);
   запрос.Текст = "ВЫБРАТЬ
   |ВсеТемы.ДатаПроведения КАК ДатаПроведения,
   |ВсеТемы.ВремяПроведения КАК ВремяПроведения,
   
   |ВсеТемы.ПредметПроведения КАК ПредметПроведения,
   |ВсеТемы.ТемаЗанятия КАК ТемаЗанятия,
   
   |ВсеТемы.ФормаПроведения КАК ФормаПроведения
   | ИЗ РегистрСведений.ВсеТемы КАК ВсеТемы
   |ГДЕ ДатаПроведения >= &ДатаНачала И ДатаПроведения <= &ДатаКонца
   |УПОРЯДОЧИТЬ ПО ДатаПроведения ";
   Результат= запрос.Выполнить().Выгрузить();
   Если месяц(ЭлементыФОрмы.ДатаНачала.Значение)= месяц(ЭлементыФОрмы.ДатаКонц.Значение) Тогда
       НачалоНедели = День(ЭлементыФОрмы.ДатаНачала.Значение);
       Иначе НачалоНедели = ФОрмат(ЭлементыФОрмы.ДатаНачала.Значение,"ДФ=""дд ММММ""");
       КонецЕсли;
       WordDoc.Variables.Item("НачалоНедели").Value=НачалоНедели;
       WordDoc.Variables.Item("КонецНедели").Value=Формат(ЭлементыФОрмы.ДатаКонц.Значение,"ДФ=""дд ММММ гггг  'года' """);  //"ДФ=""дд ММММ"""
       WordDoc.Variables.Item("ДатаУтверждения").Value=ФОрмат(((ЭлементыФОрмы.ДатаНачала.Значение)-3*60*60*24),"ДФ=""дд ММММ гггг  '  года' """) ;

       WordDoc.Fields.UpDate();

   
        Для ии = 1 По Результат.Количество()-1 Цикл
                   Таблица.Rows.Add(Таблица.Rows(3));  // тиражируем первую строку сколько нужно раз
               КонецЦикла;

   НомерСтроки = 2;
   для каждого стр из Результат Цикл
       ДатаПроведения = Формат(стр.ДатаПроведения, "ДФ =""дд.ММ""");
   НомерСтроки = НомерСтроки+1;    
   Таблица.Cell(НомерСтроки,1).Range().InsertAfter(Строка(ДатаПроведения));
   Таблица.Cell(НомерСтроки,1).Range().Font.Size = 9;
   Таблица.Cell(НомерСтроки,2).Range().InsertAfter(Строка(стр.ВРемяПроведения));
   Таблица.Cell(НомерСтроки,2).Range().Font.Size = 9;
   Таблица.Cell(НомерСтроки,3).Range().InsertAfter(Строка(Строка(стр.ПредметПроведения)+" "+ строка(стр.ТемаЗанятия)));
   Таблица.Cell(НомерСтроки,3).Range().Font.Size = 9;
   присоед = Таблица.Cell(НомерСтроки, 1);
   Если присоед = Таблица.Cell(НомерСтроки-1, 1)        тогда
   Таблица.Cell(НомерСтроки-1, 1).Merge(присоед);
   Таблица.Cell(НомерСтроки,1).Range().InsertAfter(Строка(ДатаПроведения));
   Конецесли;

    WordDoc= 0;        
КонецЦикла;



КонецПроцедуры
4 0xFFFFFF
 
17.02.10
09:07
БольшаяКраснаяКнопкаНажатие :)
5 0xFFFFFF
 
17.02.10
09:07
так вот какой ты - алгоритм нажатия большой красной кнопки
6 ProgaN
 
17.02.10
10:41
Спасибо )))
7 ProgaN
 
17.02.10
11:22
Подскажите, как добавить столбец в таблицу Word из 1С?
8 dk
 
17.02.10
11:47
Макросы умеешь записывать?
9 ProgaN
 
17.02.10
11:57
умею
10 dk
 
17.02.10
11:57
тогда в чем вопрос?
11 ProgaN
 
17.02.10
11:58
Вот такой макрос получился:
Selection.InsertColumnsRight
Как преобразовать?
12 dk
 
17.02.10
12:17
Таблица.InsertColumnsRight()
13 dk
 
17.02.10
12:24
или как по справке
Таблица.Columns(2).Select();
Word.Selection.InsertColumnsRight();
14 ProgaN
 
17.02.10
13:36
Ошибка при вызове метода контекста (Columns): Произошла исключительная ситуация (Microsoft Word): Отсутствует доступ к отдельным столбцам, поскольку ячейки таблицы имеют разную ширину.
15 dk
 
17.02.10
13:57
Таблица.Cell(1,2).Select();
---
все разжевывать надо? )
16 ProgaN
 
17.02.10
14:21
Спасибо за очередное разжевывание. )))
Еще пара вопросов к Вам.
1. Согласно вышеуказанному коду у столбца 2 (Select) увеличивается ширина. Почему?
2. Как в определенной ячейке поменять цвет шрифта?
17 dk
 
17.02.10
20:17
(16) 1. хз
2. макрос записывала? хде текст?
думаю что-то типа такого
таблица.cells(1,1).font.size = 18
18 ProgaN
 
18.02.10
07:55
(17) Не получается. Цвет остается прежним. Макрос:
   Selection.Font.Color = wdColorRed
19 dk
 
18.02.10
08:53

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Ворд = Новый ComObject("Word.Application");
   Ворд.Visible = Истина;
   Док = Ворд.Documents.Add();
   Таблица = Док.Tables.Add(Ворд.Selection.Range, 6, 5);
   Яч = Таблица.Cell(3, 4).Range;
   Яч.Text = "sdfsdfsdf";
   Яч.Font.Color = 255;
   Предупреждение("Ждем");
КонецПроцедуры
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн