VBA: вставка содержимого из буфера обмена в файл определенного формата в определенной позиции в Powerpoint

Я ищу vba-скрипт, который будет вставлять текущее содержимое моего буфера обмена в указанную позицию (скажем, в правом верхнем углу за пределами выбранного в данный момент слайда). Я хотел бы, чтобы скрипт вставил его как .emf. Однако, если бы кто-нибудь мог объяснить мне, как манипулировать сценарием для выбора позиции и другого окончания вставки, это было бы здорово.

Заранее спасибо за вашу помощь.

EDIT: то, что я, наконец, хотел бы добиться, - это взять вставленное содержимое буфера обмена и выровнять его по левому и нижнему краю по форме, которая уже выбрана в Powerpoint, а затем удалить уже существующую форму. Так что для пользователя процедура будет: 1. Скопируйте, например. диаграмму из Excel в буфер обмена 2. Выберите фигуру на слайде PowerPoint 3. Запустите сценарий 4. Вставьте содержимое, выровняйте его по левому и нижнему краю, а затем удалите старую фигуру

Если бы кто-то знал способ, как это сделать, это было бы здорово.


person eltiburon    schedule 30.06.2014    source источник


Ответы (1)


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

Dim oBackShape As Shape
Dim oFrontShape As Shape
Dim oSlide As Slide

' Now we'll assume that only one shape is selected:
Set oBackShape = ActiveWindow.Selection.ShapeRange(1)
' Get a reference to the slide that the shape is on
Set oSlide = oBackShape.Parent
' Paste the contents of the clipboard as EMF and
' get a reference to the new shape
Set oFrontShape = oSlide.Shapes.PasteSpecial(ppPasteEnhancedMetafile)(1)

With oFrontShape
    ' Left align them
    .Left = oBackShape.Left
    ' Bottom align them
    .Top = oBackShape.Top - (.Height - oBackShape.Height)
End With

oBackShape.Delete
person Steve Rindsberg    schedule 01.07.2014
comment
Эй, Стив, большое-большое спасибо. Это делает мою повседневную работу намного менее сложной и ставит важные задачи на первое место. - person eltiburon; 01.07.2014