1c+word

Тема в разделе "1C и всё что с ней связано", создана пользователем kaa, 21 мар 2008.

  1. kaa

    kaa Гость

    Господа ни у кого нет справочного материала по связи 1с с Word, а то работать методом научного тыка устал.
    Заранее спасибо!
     
  2. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Собственно, лучше чем справка по VBA еще ничего не придумано.
     
  3. kaa

    kaa Гость

    Это-то понятно да задолбаешся переиначивать что б 1с поняла
     
  4. jcnby

    jcnby Гость

    Запуск приложения:
    Код (Text):
    Word=СоздатьОбъект("Word.Application");
    Код (Text):
    //Видимость его
    Word.Visible=1;
    //добавляем новый док
    Word.Documents.Add();
    //активный док
    Док=Word.ActiveDocument();
    //Добавить параграф
    Док.Paragraphs.Add();
    //добавление текста
    Док.Paragraphs(НомерПараграпха).Range().InsertAfter(Текст);
    //оформление (как в ворде задано - так и передаем)
    Док.Paragraphs(НомерПраграфа).Range().Style="Заголовок 2";
    //откроем док
    Word.Documents.Open(ИмяФайло);
    //сохранить, сохранить как
    Док.Save();
    Док.SaveAs(ИмяФайло);
    //закрыть
    Док.Close();
    //выйти из приложения
    Word.Quit();
    Код (Text):
    //Создание дока на основе шаблонки:
    Word.Documents.Add("C:\Templates\Shablonis4e.dot");
    //Пригаем по открытым докам (Item(Номер Дока по мере открывания, начинается с 1))
    Word.Documents.Item(1).Activate();
    Word.Documents.Item(2).Activate();
    Word.Documents.Item(3).Activate();

    //Печатаем:
    Word.ActiveDocument.PrintOut();

    Вставка текста в док:
    //3 способа,
    //1: Указать начальный и конечный симлолы диапазона
    rng=Word.ActiveDocument.Range(2,4)
    //2: указать номер обзатса
    Rng=Word.ActiveDocument.Paragraphs.Item(1).Range;
    //3: несколько подряд обзатсоф ( на примере с 3-го по 5-й)
    Rng=Word.ActiveDocument.Range(Word.ActiveDocument.Paragraphs.Item(3).Range.Start
    , Word.ActiveDocument.Paragraphs.Item(5).Range.End);
    //непосредственно вставка текста
    Rng.InsertAfter("Текст");

    //InsertBefore -вставить перед, InsertAfter -после

    А если нада заменить выделенный Текст???? не беда!!!
    //признак замены (важный ксты!)
    Word.Application.Options.ReplaceSelection=1;
    //Выделенный фрагмент (получаем)
    Sel=Word.Application.Selection;
    //заменяем на текст
    Sel.TypeText("Текст");
    //делаем окончание абзацсу
    Sel.TypeParagraph();

    //полужирный шрифт
    Sel.Font.Bolt=1;
    //отменим его
    Sel.Font.Bolt=0;

    //рекомендую просто сделать цикл на просмотр свойств Selection и Font  (для форматирования текста)зы: пример построения цикла есть в теме про 1c+Mlx
    Код (Text):
    Док.Tables.Add(Док.Paragraphs(Номер).Range(),4,4)
    Таб=Док.Tables(Док.Tables.Count());
    Таб.Cell(1,1).Range().InsertAfter("текст");
     
  5. kaa

    kaa Гость

    jcnby
    Про цикл попробую! Спасибо!
     
  6. kaa

    kaa Гость

    Есть конкретный вопрос как вывести сформированый документ на передний план Activate - непрокатывает
     
  7. jcnby

    jcnby Гость

    Код (Text):
    Док=Word.ActiveDocument();
    - покажет какой док активен
    а Activate:
    Код (Text):
    Word.Documents.Item(1).Activate();
    - перейдет на созданный документ( на первый созданный в данном случае, Item(2) -на второй созданный и т.д.
    Код (Text):
    Word.Visible=1;
    - сделает видимым
    должно все работать...
     
  8. kaa

    kaa Гость

    Оно моргает в низу но на экране не разворачивается :rolleyes:
     
  9. jcnby

    jcnby Гость

    шас затестим........( возможно предыдущее приложение Word не закрыл? посмотри в Диспетчере Задач - чтобы в процессах он не висел- это может помешать открытию)
     
  10. kaa

    kaa Гость

    Не а , в диспечере всё чики пуки



    Вот что еще - может кому пригадится:

    Обращение к таблице и ячейке
    Код (Text):
    TT = Document.Tables(1); //первая таблица
    TT.Columns(1).Cells(1).Range.Text;//первая колонка первая ячейка
    а можно так
    Код (Text):
    Document.Tables().Item(2).Cell(1,3).Range.Text;
    обращение к границам в данном случае делаем невидимой
    Код (Text):
    TT.Borders(1).LineStyle = 0;//верхняя
    TT.Borders(2).LineStyle = 0;//левая
    TT.Borders(3).LineStyle = 0;//нижняя
    TT.Borders(4).LineStyle = 0;//правая
    ТT.Borders(5).LineStyle = 0;//горизонтальная
    ТT.Borders(6).LineStyle = 0;//вертикальная
     
  11. jcnby

    jcnby Гость

    Word.Visible=1;
    после него не ставь: Word.Quit();(автоматом закроет приложение и всю видимость) и Док.Close() (закроет Документ) и не даст посмотреть;
    Тогда При нормальном коде прилождение будет закрываться при закрытии ворда - при видимых документов! Для невидимых - пользуемся Quit i Close;
     
  12. kaa

    kaa Гость

    Таких команд у меня нет. Документ открывается просто хотелось чтоб он был так сказать на переднем плане
     
  13. jcnby

    jcnby Гость

    я тебя не понимаю....... т.е. у тебя 3 открытых Документа ...и среди них ты хочешь программно переключаться ? тогда вам к win32 :)
     

Поделиться этой страницей