如何使用Power-Shell在PowerPoint中应用默认主题

时间:2018-10-23 17:29:50

标签: vba powershell themes powerpoint default

有人要求我在工作中确保每个人在PowerPoint应用程序上都具有相同的默认主题,以便每个人都统一且合规。问题是我不知道如何做,但我知道Power-Shell可以为我做到这一点。我从一个好的技巧开始,但是这个脚本对我不起作用。

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

$themePath = "C:\Users\emp\AppData\Roaming\Microsoft\Templates\Document Themes\Theme1.thmx"
$path = "C:\Users\emp\AppData\Roaming\Microsoft\Templates\Document Themes"
Get-ChildItem -Path $path -Include "*.ppt", "*.pptx" -Recurse |
ForEach-Object {
 $presentation = $application.Presentations.open($_.fullname)
 $presentation.ApplyTemplate($themePath)
 $presentation.Save()
 $presentation.Close()
 "Modifying $_.FullName"
} 

$application.quit()
$application = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()

谁能说明如何使用Powershell更改默认主题?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您没有说您正在使用的PowerPoint版本。每个版本都与前一个版本有所不同,甚至取决于您是通过对象模型进行填充的。

通常,您正在使用的代码应该可以解决您的用例(看起来像是您从此处使用:PowerShell 101 blog或此处:Hey, Scripting Guy! How Can I Customize Microsoft PowerPoint Presentations所利用的),但是您并不是在说自己有任何用处。您使用的错误。那么,这是什么意思?

  

我从一个好的技巧开始,但是这个脚本对我不起作用。

我不确定为什么您会觉得PowerShell是执行此操作的选项。用户仍然必须运行它才能进行更改,或者用户可以只在PowerPoint中自己进行设置。

在PP2K16中,他们只是这样做:

  1. 启动PPT
  2. 使用文件>模板中的新内容
  3. 选择模板以创建新的演示文稿
  4. 转到“设计”标签
  5. 展开主题库
  6. 选择“保存当前主题”命令
  7. 命名主题文件并单击“保存”
  8. 在“主题库”中,右键单击缩略图,然后选择“设置为默认主题”

当然,您可以编写这些步骤的脚本,但是无法阻止用户使用他们下载或创建的其他模板,修改您刚刚设置的模板或默认情况下不属于PowerPoint的模板。

简而言之,您不能从技术上强迫用户在PowerPoint中使用给定的模板。 MSOffice / PowerPoint中没有设置允许该设置。

这听起来像您正在尝试使用技术来解决用户习惯问题。那真的不是什么。如果您的组织有标准,而用户却没有遵守或努力规避它,那么这就是人力资源问题。

您可以删除所有现有模板,仅将所需模板复制到默认文件夹,然后使用GPO设置默认模板。同样,这仍然不会阻止用户进行添加或修改。