💙

PowerShellでPowerPointのスライドを編集する。

2022/08/06に公開

この記事は何?

  • PowerPoint のスライド作るのって億劫ですよね。
  • PowerShell で片づけましょう。

構成

OS, PowerShell, PowerPoint のバージョンは次の通りです。
なお、PowerPoint は M365 です。

PS > (Get-WmiObject -Class Win32_OperatingSystem).Caption
Microsoft Windows 11 Home

PS > [string]$PSVersionTable.PSVersion
5.1.22000.653

PS > (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration').ClientVersionToReport
16.0.15330.20260

コード

既存のプレゼンテーションを編集するのも難しくないですが、
ここではプレゼンテーションを新規で作って、スライドのテキストを編集することにします。

# PowerShell のセッションに .NET クラスを定義する。
$SearchPath = 'C:\WINDOWS\assembly\GAC_MSIL\office'
$SearchFilter = 'office.dll'
$PathToAssembly = Get-ChildItem -LiteralPath $SearchPath -Filter $SearchFilter -Recurse |
    Select-Object -ExpandProperty FullName -Last 1
Add-Type -LiteralPath $PathToAssembly

# PowerPoint で新規プレゼンテーションを作る。
$Application = New-Object -ComObject PowerPoint.Application
$Application.Visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
$Presentation = $Application.Presentations.Add()

# プレゼンテーションにスライドを作る。
$CustomLayout = $Presentation.SlideMaster.CustomLayouts |
    Where-Object { $_.Name -eq 'タイトルとコンテンツ' } |
    Select-Object -First 1
$Slide = $Presentation.Slides.AddSlide(1, $CustomLayout)

# スライドのコンテンツにテキストを加える。
$Shape = $Slide.Shapes |
    Where-Object { $_.Name -match 'Content Placeholder \d+' } |
    Select-Object -First 1
$Shape.TextFrame.TextRange.Text = "message1`nmessage2"

こんな感じになりました。

簡単ですね!

まとめ

  • 意外と簡単に編集できることがわかりました。
  • もうちょっといろいろ遊べそうですね!

現場からは以上です。

Discussion