Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Добавить фото в документ Word


Автор: Экскалупатор 8.4.2009, 14:59
Всем привет. есть вопрос по работе с MSWord. я прогаю на C#. так вот мне необходимо вставить в документ картинку из файла (известен адрес), сделать эту картинку определенного размера(например 300х300 пикселей) не зависимо от исходного размера, и сделать возможным обтекание текстом, вокруг этой картинки. подскажи плиз как такое сделать, очень надо.

Автор: Akina 8.4.2009, 15:06
Открыть Ворд.
Запустить запись макроса.
Выполнить требуемые действия.
Остановить запись.
Изучить полученный код.
Выполнить его из своей программы над экземпляром Word.Application.

Автор: Экскалупатор 8.4.2009, 22:46
Akina, макрос это конечно выход, но есть одно "но"
у меня(может это только у меня), во время записи макроса не доступны операции с вставленной картинкой, т.е. вставить картинку из файла не вопрос, и в макросе это сразу записывается, но вот изменить ее размер и "обтекаемость" текстом нельзя, опция такая не доступна. так что макрос отпадает, ну только если ктонить запишет и скинет мне, буду премного благодарен.

Автор: Akina 9.4.2009, 07:47
Цитата(Экскалупатор @  8.4.2009,  23:46 Найти цитируемый пост)
 меня(может это только у меня), во время записи макроса не доступны операции с вставленной картинкой, т.е. вставить картинку из файла не вопрос, и в макросе это сразу записывается, но вот изменить ее размер и "обтекаемость" текстом нельзя, опция такая не доступна. так что макрос отпадает

При вставлении картинки записывается использование Selection.InlineShapes.AddPicture... так Вы уж не поленитесь залезть в справку и посмотреть, какие могут быть использованы параметры... я ж не зря написал - ИЗУЧИТЬ полученный код, - а не просто посмотреть на него.

Автор: Экскалупатор 9.4.2009, 15:10
Akina, Да, вы правы, конечно стоило почитать. поискал нашел вот такую конструкцию:
Код

worddocument.Shapes.AddPicture(FileName, ref Link, ref saveWitnDoc, ref Left, ref Top, ref Width, ref Height, ref range);


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

Автор: Akina 9.4.2009, 15:25
Ну теперь посмотрите справку по свойствам объекта Picture в коллекции Shapes smile

Автор: Экскалупатор 9.4.2009, 21:15
Akina, вы, батенька страшный тип! я аж вспотел переводить статьи с MSDN и выуживая по крупица, что и как примерить. Оно конечно возымело свой эффект, но было бы проще если бы сразу подсказали! ну да ладно, вот что я нашел:

Код

object False = false;
            object True = true;
            object Left = Type.Missing;
            object Top = Type.Missing;
            object Width = 300;
            object Height = 300;
            object range = Type.Missing;
            Microsoft.Office.Interop.Word.WdWrapType wrap = Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;
            worddocument.Shapes.AddPicture(@"E:\10000.jpg", ref False, ref True, ref Left, ref Top, ref Width, ref Height, ref range).WrapFormat.Type=wrap;


код добавляет картинку и ставит ей "обтекаемость", единственное что не понятно, это как поменять "обтекаемость" после добавления картинки, любые мои попытки приводили к ошибке, свойство WrapType предназначено только для чтения. Отсюда получается(ИМХО), что его можно установить только во время добавления фигуры(хотя наверное, если перезаписывать картинку, то это свойство станет снова доступным).
все, ответ найден, можно сказать мной, конечно не без помощи(активного пинания меня ногами в нужную сторону поиска) Akina, за что ему отдельное спасибо.

Автор: Akina 9.4.2009, 22:28
Цитата(Экскалупатор @  9.4.2009,  22:15 Найти цитируемый пост)
я аж вспотел переводить статьи с MSDN и выуживая по крупица, что и как примерить. Оно конечно возымело свой эффект, но было бы проще если бы сразу подсказали! ну да ладно, вот что я нашел:

Я знаю где надо искать, представляю рядом с чем. Но чтобы найти решение, мне самому пришлось бы "потеть". Оно мне надо?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)