【发布时间】:2015-12-04 18:39:50
【问题描述】:
我有一个 PowerPoint 演示文稿,该演示文稿通过附加的 VBA 脚本填充了图片。我想自动打开演示文稿并运行宏。这是我尝试过的:
- 将脚本转换为加载项,如图所示here:当我单击激活它时它会运行,但当我只是打开 powerpoint 时它就不会运行。
- 下载了一个预建插件,并调用了我的脚本子 auto_open()。这行得通,但因为它是一个启用宏的文件(?),但我必须在打开文件之前打开 powerpoint 并启用插件,所以它并不比只运行宏更自动化
-
通过 MatLab 运行 PowerPoint。我使用了我找到的here 的以下命令,这些命令可以打开 powerpoint 和我感兴趣的文件。
g = actxserver('PowerPoint.Application');Presentation = invoke(g.Presentations,'Open','\\path\Automatic_NEdN_Template2.pptm')a = invoke(Presentation.Application,'Run','Auto_Open',[])
对于小型测试用例,它甚至似乎可以工作——我可以调用一个从文件中读取数据的 vba 函数,它会将数据返回给 matlab,但是当我尝试调用制作图片的那个时,它返回了NaN 且 PowerPoint 未填充。
理想情况下,我想双击某个东西,然后打开 PowerPoint,然后运行我的脚本。
如果有帮助,这里有一些代码 sn-ps:
Function read_in_data_from_txt_file(strFileName As String) As String()
Dim dataArray() As String
Dim i As Integer
'Const strFileName As String = "C:\H5_Samples\Plots\WeeklyPlots\zz_avgTemp.txt"
Open strFileName For Input As #1
' -------- read from txt file to dataArrayay -------- '
i = 0
Do Until EOF(1)
ReDim Preserve dataArray(i)
Line Input #1, dataArray(i)
i = i + 1
Loop
Close #1
read_in_data_from_txt_file = dataArray
End Function
这是图片的代码:
Function Auto_Open() As String
Dim oSlide As Slide
Dim oPicture As Shape
Dim oText As Variant
Dim heightScaleFactor As Single
Dim widthScaleFactor As Single
Dim width As Single
heightScaleFactor = 2.1
widthScaleFactor = 2.1
width = 205
Height = 360
ActiveWindow.View.GotoSlide 2
Set oSlide = ActiveWindow.Presentation.Slides(2)
Set oPicture = oSlide.Shapes.AddPicture("C:\H5_Samples\Plots\WeeklyPlots\Nominal DS Real spectra.png", _
msoFalse, msoTrue, 1, 150, Height, width)
Set oPicture = oSlide.Shapes.AddPicture("C:\H5_Samples\Plots\WeeklyPlots\Nominal DS Imaginary spectra.png", _
msoFalse, msoTrue, 350, 150, Height, width)
'Full Resolution
ActiveWindow.View.GotoSlide 3
Set oSlide = ActiveWindow.Presentation.Slides(3)
Set oPicture = oSlide.Shapes.AddPicture("C:\H5_Samples\Plots\WeeklyPlots\Full Resolution DS Real spectra.png", _
msoFalse, msoTrue, 1, 150, Height, width)
Set oPicture = oSlide.Shapes.AddPicture("C:\H5_Samples\Plots\WeeklyPlots\Full Resolution DS Imaginary spectra.png", _
msoFalse, msoTrue, 350, 150, Height, width)
End Function
【问题讨论】:
-
试试 www.pptxbuilder.com
标签: vba powerpoint office-addins