【问题标题】:Powerpoint VBA to switch back to powerpoint from ExcelPowerpoint VBA 从 Excel 切换回 powerpoint
【发布时间】:2018-02-23 07:35:22
【问题描述】:

希望有人能帮忙....

我有一个 PowerPoint 演示文稿,其中包含来自 excel 文件的链接表格和图表。幻灯片的更新设置为手动。

我在 Powerpoint 中创建了一个 VBA 代码,它可以打开 excel 文件。我正在尝试通过 VBA 更新 powerpoint 中的链接,而不是手动选择每个链接的元素并更新值。虽然我的 VBA 代码的第一部分可以打开 excel 文件,但链接没有被更新,我认为这是因为没有回到 powerpoint 来更新链接,所以我试图包含在我的 VBA 代码中将返回到PowerPoint演示文稿的线条,之后我假设更新链接的线条将起作用(很高兴得到纠正)。下面是我到目前为止构建的代码......我的 cmets 是粗体的......

有什么建议吗? 仅供参考,我使用的是 Office 2007。

谢谢

Sub test()
Dim xlApp As Object
Dim xlWorkBook As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWorkBook = xlApp.Workbooks.Open("File location\filename.xlsm", True, False)

Set xlApp = Nothing
Set xlWorkBook = Nothing

上面的部分打开包含链接表格和图表的 excel 文件

On Error Resume Next
  With GetObject(, "PowerPoint.Application")
    .ActivePresentation.SlideShowWindow.Activate
  End With

上面的部分我希望在打开 excel 文件后返回到 powerpoint,但它没有,这就是为什么我认为下面更新链接的代码不起作用

ActivePresentation.UpdateLinks


End Sub

【问题讨论】:

    标签: vba excel powerpoint


    【解决方案1】:

    从更简单的事情开始。这将允许您从 Excel 激活第一个现有的 PowerPoint 应用程序:

    Option Explicit
    
    Public Sub TestMe()
    
        Dim ppt As New PowerPoint.Application
        ppt.visible = msoTrue
        ppt.Windows(1).Activate
    
    End Sub
    

    然后尝试一下并将其修复到您的代码中。

    【讨论】:

    • 感谢您的回复。如果我没记错的话,您上面的代码将从 excel 调用 powerpoint,因此此代码需要在 excel 中。但是,我提供的代码在 powerpoint 中,它打开了 excel 文件,但是我需要回到运行代码的 powerpoint。希望更清楚。
    • 抱歉,没有,我的回复在我完成之前发布。
    • @Morph314 - 我明白了。简单地将xlApp.Visible = True 更改为False 并尝试使用您的代码怎么样?或者尝试使用xlApp.WindowState = xlMinimized
    • 将 True 更改为 false 是我在此处发布之前尝试的第一次尝试,但是当我运行宏时,ppt 会挂起一段时间,并没有打开 excel 文件。对于最小化部分,我会在 xlApp.Visible = True 之后输入该代码吗?
    • @Morph314 - 前后试一试。 :) 也可以试试顶部的Application.ScreenUpdating = False
    【解决方案2】:

    @Vityata

    好的,我让它工作了....原始编码完成了打开 excel 文件的第一部分,然后切换回 powerpoint(我认为这只有在只有 1 个演示文稿打开时才有效,我添加了以下代码...

    AppActivate "Microsoft PowerPoint"

    所以我的完整代码如下所示:

    子测试() 将 xlApp 调暗为对象 将 xlWorkBook 调暗为对象 设置 xlApp = CreateObject("Excel.Application")

    xlApp.Visible = True

    设置 xlWorkBook = xlApp.Workbooks.Open("文件路径\文件名.xlsm", True, False)

    设置 xlApp = 无 设置 xlWorkBook = 无 AppActivate "Microsoft PowerPoint"

    结束子

    现在获取手动链接以作为 vba 代码的一部分进行更新...

    【讨论】:

      【解决方案3】:

      如果您捕获宏所在的文件。这只是您的路径和文件名的字符串

      'This is the macro file
      MacroFile = ActivePresentation.FullName
      

      然后您可以使用该变量来激活特定的 PowerPoint 演示文稿。

      使用演示文稿(宏文件)。激活 或 Presentations(MacroFile).Updatelinks

      在应用程序之间移动时最好不要使用 ActivePresentation。

      【讨论】:

      • 谢谢你,大声呼喊...但是,包含宏的 powerpoint 文件每个月都会有不同的名称,所以我每个月都必须更改 VBA。出于好奇,在“Dim xlWorkBook As Object”位之后,您会在哪里输入“MacroFile = ActivePresentation.FullName”部分?
      • 不管文件名是什么,这都会捕获当前活动演示文稿的文件名。因此,当您运行宏时,包含宏的文件应该是活动演示文稿。在宏的开头添加这行代码。
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2021-03-19
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 2021-07-17
      相关资源
      最近更新 更多