Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание ShapeRange с таблицей, в MS Word XP 
:(
    Опции темы
AKorn
Дата 16.9.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.6.2006

Репутация: нет
Всего: нет



Здраствуйте!
Народ помогите не могу понять как создать из шарпа в Word(2002 office XP) документе ShapeRange с таблицей внутри. Сам документ я создал, ShapeRange в него добавил, а дальше непонятно как выбрать его и вставить в него таблицу, а в таблицу значения?
 Вот то чего уже добился:
Код

            object oMissing = System.Reflection.Missing.Value;
            object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ 

            //Start Word and create a new document.
            Word._Application oWord;
            Word._Document oDoc;
            oWord = new Word.Application();
            oWord.Visible = true;
            oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
                ref oMissing, ref oMissing);

            Word.Shape oShape;
            oShape = oDoc.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 10, 10,200,200,ref oMissing);



 Ну, а дальше туман =) Помогите плиз.



Это сообщение отредактировал(а) AKorn - 16.9.2006, 12:29
PM MAIL   Вверх
Wanderer2019
Дата 16.9.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



а что такое ShapeRange? 
вообще таблицы добавляются через 
Document.Tables.Add(...)

PM ICQ MSN   Вверх
ivashkanet
Дата 16.9.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Значится так:
Я не в курсах что есть "документ ShapeRange", но идея такая:
Включаешь в Ворде запись макроса. Записываеш вставку таблицы. Получаешь код ВизуалБарсика
Код

Sub Макрос2()
'
' Макрос2 Макрос
' Макрос записан 16.09.2006 Андрей
'
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
        5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Сетка таблицы" Then
            .Style = "Сетка таблицы"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = True
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = True
    End With
End Sub

Глядишь на него и понимаешь, что самый главный метод --- это Add объекта Tables. Лезем в справку:
Цитата

Returns a Table object that represents a new, blank table added to a document.

expression.Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)

expression   Required. An expression that returns a Tables object.

Range  Required Range object. The range where you want the table to appear. The table replaces the range, if the range isn't collapsed.

NumRows  Required Long. The number of rows you want to include in the table.

NumColumns  Required Long. The number of columns you want to include in the table.

DefaultTableBehavior  Optional Variant. Sets a value that specifies whether Microsoft Word automatically resizes cells in tables to fit the cells’ contents (AutoFit). Can be either of the following constants: wdWord8TableBehavior (AutoFit disabled) or wdWord9TableBehavior (AutoFit enabled). The default constant is wdWord8TableBehavior.

AutoFitBehavior  Optional Variant. Sets the AutoFit rules for how Word sizes tables. Can be one of the following WdAutoFitBehavior constants: wdAutoFitContent, wdAutoFitFixed, or wdAutoFitWindow. If DefaultTableBehavior is set to wdWord8TableBehavior, this argument is ignored.


В общем код таков:
Код

oShape.Select(ref oMissing);
            
oDoc.Tables.Add(oWord.Selection.Range, 2, 2, ref oMissing, ref oMissing);

PM MAIL WWW ICQ   Вверх
AKorn
Дата 17.9.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.6.2006

Репутация: нет
Всего: нет



Wanderer2019, В ворде нажми Вставка -> Надпись это и есть ShapeRange. Просто вставлять я таблицы знаю как =)

ivashkanet, У меня когда включаеш запись макрос и делаеш вставку Надписи то он этого не делает =) Как будто я не нажимал. 
 Откуда цитата кстати?
Код

oShape.Select(ref oMissing);
            
oDoc.Tables.Add(oWord.Selection.Range, 2, 2, ref oMissing, ref oMissing);
 
помогло. Спасибо.
 Еще маленький вопросик, как мне указать на какой странице создать Shape? А то он создает его только на первой, как его переместить на другие старницы?


PM MAIL   Вверх
ivashkanet
Дата 17.9.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(AKorn @  17.9.2006,  10:37 Найти цитируемый пост)
 Откуда цитата кстати?

Встроенная в Ворд справка по VBA 
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 17.9.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



По умолчанию ворд вообще все делает с ActiveDocument.
Поэтому здесь есть 2-ва варианта.
1. либо делаешь нужный тебе документ Activate.
2. либо работаешь не через экземпляр ворда, а через непосредсвенно тот документ в котором что то записываешь.
завтра постараюсь отписать подробнее...
PM ICQ MSN   Вверх
ivashkanet
Дата 17.9.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(AKorn @  17.9.2006,  10:37 Найти цитируемый пост)
 Еще маленький вопросик, как мне указать на какой странице создать Shape? А то он создает его только на первой, как его переместить на другие старницы?

А фиг его знает. Вот в Талицу передается oWord.Selection.Range --- место в котором создавать таблицу  smile 
PM MAIL WWW ICQ   Вверх
Wanderer2019
Дата 18.9.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17



Цитата(Wanderer2019 @  17.9.2006,  11:36 Найти цитируемый пост)
По умолчанию ворд вообще все делает с ActiveDocument.


млин... обшибся ... 
думал про документ речь идет...
на счет страниц я думаю придется тебе как и в жизни - чтобы добавить таблицу на пустой, но еще не существующей странице двигаться туда по Enter.
если же она уже существует, то искать ее при помощи Selection.



Это сообщение отредактировал(а) Wanderer2019 - 18.9.2006, 09:15
PM ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.