【发布时间】:2017-08-24 13:28:19
【问题描述】:
长话短说 - 我正在尝试将字符串从 PowerShell 传递到 PowerPoint 以更新母版幻灯片上的文本框。我可以在 PowerPoint vba 中执行此操作,但它是完全静态的。当我尝试通过 PowerShell 将数据传递到 PowerPoint 时,我会收到一个我无法解决的错误。 (see here)
因此,我尝试通过 Excel 代理来实现!我已经使用 Excel VBA 来更新 PowerPoint 幻灯片上的内容,所以认为这很合适。我目前在 Excel 中设置了形状,更新了数据,然后将其粘贴到 PowerPoint 幻灯片中,保存并关闭。
我现在需要扩展这个 Excel 宏,使其具有更新母版幻灯片上的文本框的功能。我需要将“PowerPoint VBA”翻译成“Excel VBA for PowerPoint”,多么可怕的一句话……我跑题了:
PowerPoint VBA
Function UpdateMasterF(message As Variant)
Dim sourceLabel As Shape
Dim curSLD As Long
curSLD = ActiveWindow.View.Slide.SlideIndex
'switch to SlideMaster
Application.Windows(1).ViewType = ppViewSlideMaster
Set sourceLabel = ActivePresentation.SlideMaster.CustomLayouts(1).Shapes("sourcelabel")
sourceLabel.TextFrame.TextRange.Text = message
'return to default
Application.Windows(1).ViewType = ppViewNormal
'set slide
ActiveWindow.Presentation.Slides(curSLD).Select
Excel VBA
Function TestPowerPoint(message As Variant, presPath As Variant)
Dim oPPTApp As Object
Dim oPPTFile As Object
Set oPPTApp = CreateObject("PowerPoint.Application")
oPPTApp.Visible = msoTrue
Set oPPTFile = oPPTApp.Presentations.Open(presPath)
' translate e.g. ApplicationWindow, ActivePresentation etc
oPPTFile.Save
oPPTFile.Close
Set oPPTFile = Nothing
oPPTApp.Quit
Set oPPTApp = Nothing
我需要能够在 Excel 宏中完成与 PowerPoint VBA 中相同的步骤。不过,我在为它找到正确的名称时遇到了问题。所以它说的地方
Application.Windows(1).ViewType = ppViewSlideMaster
可以用 oPPTApp 或 oPPTFile 代替吗?我已经阅读了MSDN Docs,它似乎匹配但不起作用。
希望这传达了我的要求!我希望大多数人在这种情况下阅读和颤抖......
【问题讨论】:
-
您需要切换视图吗?我知道如果您手动执行此操作,您会这样做,但如果您引用
ActivePresentation.SlideMaster.CustomLayouts(1)...,那么也许您不需要?不过我不知道,我从来没有给大师写信。 -
PowerPoint 中您需要声明的所有内容。 e 并使用适当的 PowerPoint 对象进行引用。因此,您需要 oPPTApp.Windows(1).ViewType 而不是 Application.Windows(1).ViewType = ppViewNormal。我还将 oPPTApp 声明为 PowerPoint.Application 类型。确保您引用了 PowerPoint 对象库。
-
@CLR - 手动部分的唯一原因是确保选择了正确的母版幻灯片,因为它有 3。如果我能找到一行直接更新该幻灯片上的框我很乐意这样做。会研究。手动最快的方法是查看幻灯片并按下母版幻灯片,这会将您带到该幻灯片的母版。
-
我的意思是,我不确定您是否需要找到与以下行等效的 Excel:
Application.Windows(1).ViewType = ppViewSlideMaster和Application.Windows(1).ViewType = ppViewNormal。祝你好运! -
@RichHolton PowerPoint.Application 似乎不是有效类型,我理解正确吗?将 oPPTApp 调暗为 PowerPoint.Application
标签: vba excel powershell ms-office powerpoint