#c# #ms-word
#c# #ms-word
Вопрос:
Я пытался скопировать автоформу из PPT в word. но это копирование в формате изображения. Мы не можем редактировать текст или фигуры в Word. Как этого избежать?
Код, который я использую, не дает ожидаемого результата:
foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slide.Shapes)
{
if (targetDoc != null)
{
shape.Copy();
this.wordApp.ActiveWindow.Selection.Paste();
}
}
Комментарии:
1. очевидно, что вы используете что-то другое, кроме Word 2010, где это не проблема. Но Word 2007 и Word 97-2003 отличаются способом обработки автофигур, особенно межпродуктовых — какой из них вы используете?
2. MSOffice 2007, VS 2008, Windows XP. Моя проблема в том, что я могу скопировать фигуры в формате изображения, но не в формате ‘autoshape’
3. Понял. MS Word 2007 изначально не создает и не разрешает редактировать автофигуры PowerPoint / Excel 2007 (Word 2010 делает). Word 2007 продолжает использовать версию автоформ, использовавшуюся в Word 2003 и ранее — говорят, что это связано с некоторыми проблемами совместимости. Чтобы убедиться в этом сами, создайте форму «сердца» как в Word 2007, так и в PowerPoint 2007 по отдельности. Вы заметите, что они выглядят немного по-другому. К сожалению, то, о чем вы спрашиваете, невозможно скопировать из PowerPoint 2007 и отредактировать в Word 2007 как редактируемую автоформу.
4. хорошо, спасибо. Но я могу скопировать в формате EMF, который позволяет редактировать точки, но не текст внутри изображения. Как включить опцию редактирования изображения после вставки изображения emf? Любое предложение может помочь. Заранее спасибо.
5. Для этого, после того как вы скопировали EMF, просто щелкните правой кнопкой мыши на EMF и выберите «Группировка-> Разгруппировать». Теперь у вас будет доступ к различным компонентам фигуры.
Ответ №1:
несколько раз я пытался скопировать форму в формате EMF.
shape.Copy();
object objectMissing = System.Reflection.Missing.Value;
object objLink = false;
object objType = WdPasteDataType.wdPasteEnhancedMetafile;
wordApp.ActiveWindow.Selection.Range.PasteSpecial(ref objectMissing, ref objLink, ref objectMissing, ref objectMissing, ref objType, ref objectMissing, ref objectMissing);
Ответ №2:
Это может быть по умолчанию в Office.Библиотека взаимодействия, которую нельзя изменить.
Ответ №3:
Очевидно, Copy — это неправильный API
Возможно, вам понадобится CopySepcial (хотя вам придется посмотреть документы самостоятельно)
Я предлагаю записать макрос в Word, пока вы вставляете одну простую фигуру. Проверьте код, сгенерированный в макросе, и отразите это для создания фигур как фигуры в целевом документе.