Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2010, 19:03   #1
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию GoTo

Как перенести что-нибудь куда-нибудь?
Пробую
Код:
Word::RangePtr MakeRange(int begin, int end)
{	
	CComVariant beginVar(begin);
	CComVariant endVar(end);

	return m_WordDocument->Range(&beginVar, &endVar);
}

...
CComVariant sectonBreak(Word::wdSectionBreakNextPage);
m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertAfter(L"some text");

m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertParagraphAfter();
m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertBreak(&sectonBreak);
m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertBreak(&sectonBreak);
m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertBreak(&sectonBreak);
m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertParagraphAfter();

Word::RangePtr testRange = MakeRange(2, 5);

//testRange->Delete();
	
ComVariant goToPageVar(Word::wdGoToPage), goToLastVar(Word::wdGoToAbsolute), count(3);
testRange->GoTo(&goToPageVar, &goToLastVar, &count);
...
при GoTo ничего не происходит. Я правильно понимаю /использую метод Goto?
Если есть документ с 10 страницами как с 1ой страницы перенести кусок (range или шейп) на последнюю?

находил похожие темы, но разобраться не разобрался. Тут как то сильно сложно, складывается впечатление, что в пределах 1ого документа перенос объектов можно выполнять проще.

Последний раз редактировалось Diego__; 12.03.2010 в 19:19.
Diego__ вне форума Ответить с цитированием
Старый 12.03.2010, 22:00   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Метод GoTo не переносит объект, он изменяет содержимое переменной, которая его вызывает. Т.е. если Range ссылается, скажем, на первую страницу, то при переходе на десятую содержимое первой страницы не перенесётся, а переменная будет уже ссылаться на начало десятой страницы.
Shape можно перенести задавая Anchor, а Range, наверное, только через буфер.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.03.2010, 01:37   #3
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Range, наверное, только через буфер.
Не только.
Чисто теоретически можно определять закладку, вставлять в новое место поле REF, делать update и unlink и удалять закладку.
Aent вне форума Ответить с цитированием
Старый 13.03.2010, 19:55   #4
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию

В 1ом сообщении я пробовал перенести кусок текста, но конечной целью является перенос шейпа.

С якорем пробую
Код:
ShapePtr wordArt;
RangePtr newAnchor;
…
wordArt->Anchor = newAnchor;
Выдает ошибку компиляции
Цитата:
error C2774: 'Word::Shape::Anchor' : no 'put' method is associated with this propert
В msdn указано
Цитата:
Returns a Range object that represents the anchoring range for the specified shape or shape range. Read-only.
Что то похожее я уже спрашивал, но темы не нашел..
В VBA мне подсказывали, что ошибки не дает. Есть другой метод задать Anchor объекта? Здесь похожая тема, но там якорь можно задать при создании объекта, мне нужно для уже существующего.
Пробовал
Код:
int begin, end;
…
wordArt->Anchor->SetRange(begin, end);
или
Код:
wordArt->Anchor->End = end;
wordArt->Anchor->Start = begin;
при этом ничего не происходит. Кажется, довольно простая операция, но ничего не получается. Что здесь можно сделать?

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

Последний раз редактировалось Diego__; 13.03.2010 в 19:58.
Diego__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
goto bye; Ошибка при компиляции в MVS2008 TheWanderer Общие вопросы C/C++ 4 14.06.2010 18:10
goto Serg12 Помощь студентам 12 14.06.2010 17:31
чем заменить goto? Agronom Общие вопросы C/C++ 3 19.12.2009 19:43
Pascal. решить задачу используя цикл for и оператор безусловного перехода goto Knubbe Помощь студентам 8 18.12.2009 03:08
php goto TDrive PHP 10 28.07.2009 00:04