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

  • Автор темы arhiordinator1
  • Дата начала
A

arhiordinator1

#1
Привет народ 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);
 

hosm

* so what *
18.05.2009
2 442
6
#2
надо делать Document.Tables.Add, а у Вас получается ActiveDocument.Tables.Tables.Add
[post="154476"]тут описалку уже приводили[/post]
 

vital

Больной Компом Детектед
29.01.2006
2 432
33
#3
[search=]создать таблицу в Word[/search]

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

hosm

* so what *
18.05.2009
2 442
6
#4
vital
Не спорь, по ночам надо спать, а если уж не спишь, то быть внимательней :)
Я тоже 1С не знаю и тоже могу иногда ошибаться, но не в данном случае, так как я знаю VBA (ну немного, и уж таблицу не одну кодом нарисовала).
QQ=Document.Tables;
QQ.Tables.Add(Range=tableLocation, NumRows=3, NumColumns=4);
получается 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 позволяет получить конкретную таблицу по номеру, а без индекса просто даст ошибку.
Use Tables(index), where index is the index number, to return a single Table object. The index number represents the position of the table in the selection, range, or document.
В общем, надо просто Document.Tables.Add
arhiordinator1
И еще - я не знаю, как 1С+Word отнесется к заданию параметров в таком виде:
(Range=tableLocation, NumRows=3, NumColumns=4);
VBA позволяет задавать их с помощью := , а не =.
Возможно, такое задание параметров может и не прокатить, надо полностью описать все параметры метода.
 
A

arhiordinator1

#5
Всё равно не пашет :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);
КонецПроцедуры
 

hosm

* so what *
18.05.2009
2 442
6
#6
А так?
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
 
A

arhiordinator1

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