Редактирование фигур в powerpoint с использованием powershell - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть сценарий powershell, который я использовал для создания powerpoint. Я не хочу редактировать, как он вставляется, так как это было сделано с использованием функций, которые я использую для нескольких разных случаев, и только в одном мне нужно для дальнейшего редактирования вещей. Однако я изо всех сил пытаюсь определить, как отправить изображение на оборот и изменить размер текста в таблице с помощью powershell. Я знаю номер формы обоих рассматриваемых предметов, однако я не уверен, как редактировать их в PowerPoint. Я пробовал:

$ppo = New-Object -ComObject powerpoint.application 

$presentation = $ppo.Presentations.open($ppt)


$presentation.Slides[3].Shapes[6].sendtoback


$presentation.Slides[6].Shapes[5].Left = 50

$presentation.Slides[6].Shapes[5].Top = 50

$presentation.Slides[6].Shapes[5].Width = 600


$presentation.Slides[6].Shapes[5].Height = 350

$presentation.Slides[6].Shapes[5].TextFrame.TextRange.Font.size = 9

$presentation.saveas($ppt)

$presentation.close()

Безрезультатно. Я успешно отредактировал размер таблицы, но там написано, что у шрифта нет свойства размера. Кроме того, отправка назад, похоже, ничего не делает. Есть ли простой способ сделать это, что мне не хватает?

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Помещаем это здесь, поскольку оно слишком велико для обычного комментария.

Почему вы не смотрите на свойства каждого из объектов, которые вам нужны, чтобы определить, есть ли свойство, прежде чем пытаться использовать а также обнаружение числового присвоения объекта, с которым вы пытаетесь работать.

Например:

$ppo = New-Object -ComObject powerpoint.application 
$ppo.Visible = [Microsoft.Office.Core.MsoTriState]::msoTrue

$presentation = $ppo.Presentations.open($ppt)

$presentation.Slides[3].Shapes | 
Select -First 1

$ppo | 
Get-Member | 
Out-GridView

$ppt | 
Get-Member | 
Out-GridView

$presentation | 
Get-Member | 
Select Method |
Out-GridView

$presentation.Slides[3].Shapes[1] | 
Get-Member | 
Out-GridView

Просто используйте фильтр в OGV, чтобы найти все доступные методы, и т. д. c. Как только вы увидите список, перейдите к ОМ, как определено.

# Create a new deck
Add-type -AssemblyName office
$Application = New-Object -ComObject powerpoint.application
$application.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue

$slideType = 'microsoft.office.interop.powerpoint.ppSlideLayout' -as [type]

$blanklayout = $slideType::ppLayoutTitleOnly

$presentation = $application.Presentations.add()

$slide = $Presentation.Slides.Add($presentation.Slides.Count + 1, 15)

# Maually add a few objects, then manully run these lines to see the changes
# Change the font of the main window
$presentation.Slides[1].Shapes[1].TextFrame.TextRange.Font.size = 42

# Select a shape
$presentation.Slides[1].Shapes[3].Select()

# Change the ZOrder
$Application.ActiveWindow.Selection.ShapeRange.ZOrder(3)

# Clean-up
$Application.quit()
$Application = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()
Stop-Process -Name POWERPNT -ErrorAction SilentlyContinue -Force
0 голосов
/ 06 февраля 2020

Я использовал:

$ppo = New-Object -ComObject powerpoint.application 

$ppo.Visible ='msotrue'

$presentation = $ppo.Presentations.open($FinalPPT)


$presentation.Slides[3].Shapes[6].Select()

$ppo.CommandBars.ExecuteMso("ObjectSendToBack")

и

$presentation.Slides[6].Shapes[5].Select()

$ppo.CommandBars.ExecuteMso("FontSizeIncrease")

$presentation.saveas($FinalPPT)

$presentation.close()

$ppo.quit()

Stop-Process -name POWERPNT -Force
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...