• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

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);
 
H

hosm

надо делать Document.Tables.Add, а у Вас получается ActiveDocument.Tables.Tables.Add
[post="154476"]тут описалку уже приводили[/post]
 
V

vital

[search=]создать таблицу в Word[/search]

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

hosm

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

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

hosm

А так?
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 = Истина, если у вас этого нет по коду.
Ну, посмотрите пример:
 
A

arhiordinator1

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!