Это то, что у меня есть для моего макроса (подробности по вопросу ниже):
Sub saveWithLogo()
Dim fd As FileDialog
Dim directory As String
Dim vrtSelectedItem As Variant
Dim osld As Slide
Dim oPic As Shape
Dim osldGroup As Slide
Dim oshp As Shape
Dim logoPic As Shape
Dim i As Integer
Dim num_pics As Integer
Dim fso As New FileSystemObject
Dim fileName As String
Dim filePath As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd 'Get pictures from file dialog, add logo to each picture
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
numPics = .SelectedItems.Count
fileName = fso.GetBaseName(vrtSelectedItem)
filePath = fso.GetParentFolderName(vrtSelectedItem)
Set osld = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, ppLayoutBlank)
Set oPic = osld.Shapes.AddPicture(vrtSelectedItem, msoFalse, msoTrue, 50, 50)
logoWidth = 6.18 * 28.3
logoHeight = 1.4 * 28.3
Set logoPic = osld.Shapes.AddPicture("C:\Pictures\Logo\" & "logo.png", lsoFalse, msoTrue, 50, 50, logoWidth, logoHeight)
Next vrtSelectedItem
End If
End With
For i = 1 To numPics 'Groups pictures on slide
Set osldGroup = ActivePresentation.Slides(i)
ActivePresentation.Slides(i).Select
ActiveWindow.Selection.Unselect
For Each oshp In osldGroup.Shapes
If oshp.Type = msoPicture Then oshp.Select Replace:=False
Next oshp
With ActiveWindow.Selection.ShapeRange
If .Count > 1 Then .Group
End With
'ActivePresentation.Slides(i).Select
'Call ActiveWindow.Selection.SlideRange.Shapes.Export(filePath & fileName & "_with logo", ppShapeFormatJPG, 3072)
Next i
Set fd = Nothing
End Sub
Отсюда я хочу взять сгруппированную фотографию с каждого слайда и сохранить ее в папке с файломВыберите выбранные элементы и сохраните каждую сгруппированную фотографию как исправленную версию исходного выбранного элемента.
Так что, если я выбрал элементы: "photo1.jpg", "thisphoto.png" и "somedescriptivename.jpg", все изта же папка (скажем «C: \ Documents \ myproject \ images \». Я хочу сохранить новые сгруппированные фотографии в «C: \ Documents \ myproject \ images \» как «photo1_with logo.jpg», «thisphoto_with logo.jpg»", и" somedescriptivename_with logo.jpg ".
В настоящее время я могу успешно разместить все изображения на слайдах и сгруппировать их. Я не знаю, как получить уникальное имя строки для каждого vrtSelectedItem в .SelectedItems.Я знаю, что могу изменить
Dim fileName As String
на
Dim fileName() As String
, чтобы сохранить его таким образом, но я не знаю, как ссылаться на это в цикле for (fso.GetBaseName (vrtSelectedItem.Index)?). ИЯ также получаю сообщение об ошибке «Ошибка компиляции: метод или элемент данных не найден» при попытке сохранить группу.