Создание таблицы в Word

Тема в разделе "1C и всё что с ней связано", создана пользователем arhiordinator1, 6 дек 2009.

  1. arhiordinator1

    arhiordinator1 Гость

    Привет народ B)

    Подскажите как создать таблицу в Word

    ПутьКПечФорме="C:\WordApplication\123.doc";
    Состояние("Создаем документ MS Word...");
    Если ФС.СуществуетФайл(ПутьКПечФорме) = 0 Тогда
    Предупреждение("Файл шаблона не найден");
    Возврат;
    КонецЕсли;
    Word=СоздатьОбъект("Word.Application");
    Word.Options.CheckSpellingAsYouType = 0;
    Word.Options.CheckGrammarAsYouType = 0;
    Word.Options.CheckGrammarWithSpelling = 0;

    Word.Documents.Add(ПутьКПечФорме);
    Document=Word.ActiveDocument;
    ------- Код не работает после операторов ниже
    Не пойму в чём ошибка таблица не создаётся ни фига :(
    QQ=Document.Tables;
    QQ.Tables.Add(Range=tableLocation, NumRows=3, NumColumns=4);
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    надо делать Document.Tables.Add, а у Вас получается ActiveDocument.Tables.Tables.Add
    [post="154476"]тут описалку уже приводили[/post]
     
  3. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.470
    Симпатии:
    27
    [search=]создать таблицу в Word[/search]

    Пс.
    OKEN, я конечно про 1с вообще ничего не знаю, но вроде бы, у человека в коде именно так, как написала ты.. или нет?
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    vital
    Не спорь, по ночам надо спать, а если уж не спишь, то быть внимательней :)
    Я тоже 1С не знаю и тоже могу иногда ошибаться, но не в данном случае, так как я знаю VBA (ну немного, и уж таблицу не одну кодом нарисовала).
    получается Document.Tables (=QQ).Tables.Add
    А теперь по полочкам:
    1) Tables Property (у нас для Document object)
    Returns a Tables collection that represents all the tables in the specified cell, document, range, selection, or table.
    2) Метод Add используется для добавления таблицы в данную коллекцию (что и надо в данном случае).
    3) у коллекции таблиц Tables позволяет получить конкретную таблицу по номеру, а без индекса просто даст ошибку.
    В общем, надо просто Document.Tables.Add
    arhiordinator1
    И еще - я не знаю, как 1С+Word отнесется к заданию параметров в таком виде:
    VBA позволяет задавать их с помощью := , а не =.
    Возможно, такое задание параметров может и не прокатить, надо полностью описать все параметры метода.
     
  5. arhiordinator1

    arhiordinator1 Гость

    Всё равно не пашет :D
    Вот скинул весь код ни как не пойму в чём дело, если просто как было описано, то говорит, что переменные Range,NumRows,NumColumns, не определены. Определял разными способами и знаки присваивания менял.

    перем ПутьКПечФорме,myRange;


    Процедура Word()

    ПутьКПечФорме="C:\WordApplication\123.doc";
    Состояние("Создаем документ MS Word...");
    Если ФС.СуществуетФайл(ПутьКПечФорме) = 0 Тогда
    Предупреждение("Файл шаблона не найден");
    Возврат;
    КонецЕсли;
    Word=СоздатьОбъект("Word.Application");
    Word.Options.CheckSpellingAsYouType = 0;
    Word.Options.CheckGrammarAsYouType = 0;
    Word.Options.CheckGrammarWithSpelling = 0;

    Word.Documents.Add(ПутьКПечФорме);
    Document=Word.ActiveDocument;
    //myRange=ActiveDocument.Range(Start:=0,End:=0); ----- Здесь попытался определить переменную myRange, но всё равно что то не так:D
    Document.Tables.Add(Range:=myRange,NumRows:=3,NumColumns:=4);
    КонецПроцедуры
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А так?
    Document.Tables.Add(Word.Selection.Range, 3, 4, 1, 0)
    последние константы - wdWord9TableBehavior, wdAutoFitFixed
    или даже так:
    TBL = Word.ActiveDocument.Tables.Add(Word.Selection.Range, 3, 4, 1, 0)
    диапазон:
    myRange = Document.Range(0, 0)
    TBL = Document.Tables.Add(myRange, 3, 4, 1, 0)
    Можно попытаться Word.Activate или Word.Visible = Истина, если у вас этого нет по коду.
    Ну, посмотрите пример: http://1c-pro.ru/lofiversion/index.php/t15167.html
     
  7. arhiordinator1

    arhiordinator1 Гость

    Огромное спасибо, вы прелесть :D Разобрался. Наконец по раньше лягу спать ))))
     
Загрузка...

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