Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как вставить картинку в Word-документ?

3.0K
27 января 2003 года
tsnec
6 / / 27.01.2003
Как вставить картинку, если я открываю Word-документ как

Variant wordApp = Variant::CreateObject("Word.Application");
?
Спасибо
3.0K
07 февраля 2003 года
tsnec
6 / / 27.01.2003
Были попытки сделать так:

AnsiString S = "1.bmp";
Variant T = True;
Variant wordApp = Variant::CreateObject("Word.Application");
wordApp.OlePropertyGet("ActiveDocument").OlePropertyGet("Shapes").OleFunction("AddPicture",
StringToOleStr(S), T, T, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam);

Но выдает run-time error "Project raised exception EOLESysError "Exception Occurred".
Process stopped."

Что неправильно?
1.9K
08 февраля 2003 года
ILS
100 / / 28.01.2003
А "в терминах" TWord-овских компонентов все работает:

WideString FileName("verbtabl.bmp");
try
{
try
{
WordApplication->Connect();
}
catch (Exception &exception)
{
ShowMessage("Word не запускается");
return;
}
WordApplication->Documents->Add();
WordDocument->ConnectTo(WordApplication->ActiveDocument);
WordApplication->Selection->InlineShapes->AddPicture(BSTR(FileName));
WordApplication->GetDefaultInterface()->Visible = true;
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
// WordApplication->Disconnect();


Вобще вещь довольно капризная (особенно при работе со строками), но по крайней мере имеется развернутое сообщение об ошибках с указанием строки в h-файле. (У меня тоже не сразу пошло :-))
3.0K
08 февраля 2003 года
tsnec
6 / / 27.01.2003
ТО, чтопредложено - увы, не работает в Word2000 :(

Продолжаю пытаться сделать своим путем( вот так ):

WideString BmpFileName("1.bmp");
Function AddPicture("AddPicture");
Variant Shapes = currentDoc.OlePropertyGet("Shapes");
Shapes.Exec(AddPicture << BmpFileName);

Ошибка уже другая - говорит, что неправильно задано имя файла
Как правильно задать, пока не знаю:(
3.0K
09 февраля 2003 года
tsnec
6 / / 27.01.2003
Удалось вывести картинку так:
WideString BmpFileName;
// заводится ПОЛНОЕ имя с именем директории

Wrd=CreateOleObject("Word.Application");
Variant currentDoc = Wrd.OlePropertyGet("ActiveDocument");
Variant Shapes = currentDoc.OlePropertyGet("Shapes");
Shapes.Exec(AddPicture << BmpFileName);

Но если попробовать потом вставить еще одну картинку, то получается ошибка "Exception class EOleException with Message 'Type mismatch'. Process stopped."

Может быть, кто-нибудь знает, в чем дело?
3.0K
12 февраля 2003 года
tsnec
6 / / 27.01.2003
А надо очищать аргументы
Shapes = currentDoc.OlePropertyGet("Shapes");

Function AddPic("AddPicture");

Shapes.Exec( AddPic << WideString("Test.bmp"));

AddPic.ClearArgs();

Вот как это лечится


Осталась одна проблема - как вставить картинку на нужное место ( например, после 5 строки текста)?
1.9K
12 февраля 2003 года
ILS
100 / / 28.01.2003
for(int i=0;i<5;i++)
WordApplication->Selection->TypeParagraph();
(Складывается впечатление, что ты не используешь "могучего ключа" к офисным программам: запись действий в макросы)
1.9K
12 февраля 2003 года
ILS
100 / / 28.01.2003
То было - вставить 5 строк, а опуститься на 5 строк:
OleVariant line=wdLine;
Selection->MoveDown(line,5);
3.0K
13 февраля 2003 года
tsnec
6 / / 27.01.2003
Для вывода картинки в Word-документ я пользуюсь таким способом

Wrd=CreateOleObject("Word.Application");
Variant currentDoc = Wrd.OlePropertyGet("ActiveDocument");
Variant Shapes = currentDoc.OlePropertyGet("Shapes");
Function AddPic("AddPicture");
Shapes.Exec( AddPic << WideString("Test.bmp"));
AddPic.ClearArgs();

Чтобы поместить картинку, например, после таблицы, или после 5 строки документа, была перепробована масса возможностей, естественно, включая и Selection, но безуспешно.
Все равно вставляется только в самое начало:(
1.9K
14 февраля 2003 года
ILS
100 / / 28.01.2003
Если уж ты упорно хочешь юзать именно OleObject-ы,
а не работающие TWord... компоненты, то почему бы тебе не воспользоваться "классическим" примером из
Borland\CBuilder6\Examples\Doc\OLEWord1\
- там вместо Word.Application юзают Word.Basic
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог