【问题标题】:VBA Excle run a Powerpoint marco that takes in the excel filenameVBA Excel 运行一个采用 excel 文件名的 Powerpoint marco
【发布时间】:2019-06-04 01:16:47
【问题描述】:

我在自动创建的数据文件中有这个宏(创建的一部分是插入和运行宏)。 我想打开一个模板文件,然后需要运行一个包含 excel 数据文件名的 PPT 宏。调用宏的那个(data1.xlsm) 我有这个,但无法弄清楚带有文件名的宏调用。

Dim PPTObj As Object 
Set PPTObj =    CreateObject("PowerPoint.application") 
With PPTObj 
.Presentations.Open Filename:="C:\Presentations\Company\Template.pptm" 
.Run  "Template.pptm!MainMacro" 
End With

.Run "Template.xlsm!MainMacro(filename)" 是我要找的。​​p>

也许另一个方向是获取PPT中的对象。 但是如何在事先不知道的情况下获取数据文件名/路径呢?

Set wb - getobject(openwexcelfile)

由于另一个程序(不是office)正在创建数据文件,我不知道它的名称或目录,但它是调用powerpoint宏的文件,它将被打开。

感谢您的任何见解。

【问题讨论】:

  • 只传一个参数。 Application.Run 上的 MSDN documentation 几乎准确地显示了您正在寻找的内容。
  • 谢谢,这行得通,我不知道如何传递该参数。我试图在引号内做到这一点。 .Run "Template.pptm!MainMacro" ,filename,filepath

标签: vba excel powerpoint office-2016


【解决方案1】:

感谢共产国际的洞察力。 这是最终的解决方案。 sleep 是为了让 PPT App 在尝试运行宏之前打开。

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub auto_open()

fname = ActiveWorkbook.Name
Path = ActiveWorkbook.Path

Dim PPTObj As Object
Set PPTObj = CreateObject("PowerPoint.application")
PPTObj.Presentations.Open Filename:="C:\presentation\Template.pptm"
    Sleep (3000)
PPTObj.Run "Template.pptm!Main", fname, Path
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 2018-02-23
    • 2017-07-26
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多