2017-09-14 120 views
1

我希望有人可以帮到....Powerpoint VBA从Excel切换回powerpoint

我有一个powerpoint演示文稿,它链接了excel文件中的表格和图形。幻灯片的更新设置为手动。

我在Powerpoint中创建了一个打开excel文件的VBA代码。我试图通过VBA更新PowerPoint中的链接,而不是手动选择每个链接元素并更新值。虽然我的VBA代码的第一部分在打开excel文件时起作用,但链接并没有被更新,我认为这不是更新链接的重点,所以我试图在我的VBA代码中加入线将回到PowerPoint演示文稿,之后我假设线更新链接将工作(高兴地被纠正)。下面是我迄今为止建立的代码....我的评论以粗体显示...

有什么建议吗? 仅供参考,我使用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 

部分打开包含

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

上文第一节希望链接的表格和图表Excel文件会打开excel文件后回到powerpoint,但它不是这是为什么我认为下面的代码来更新链接不起作用

ActivePresentation.UpdateLinks 


End Sub 

回答

1

从更容易的事情开始。这将允许您从Excel启动的第一个存在的PowerPoint应用程序:

Option Explicit 

Public Sub TestMe() 

    Dim ppt As New PowerPoint.Application 
    ppt.visible = msoTrue 
    ppt.Windows(1).Activate 

End Sub 

然后打了一下它,并将其固定到你的代码。

+0

感谢您的回复。如果我没有弄错,你上面的代码会从excel中调用powerpoint,所以这段代码需要在excel中。然而,我所提供的代码是以powerpoint打开excel文件的,但是之后我需要返回代码运行的简报。希望更清楚。 – Morph314

+0

@ Morph314 - 欢迎。你设法做到了吗? – Vityata

+0

抱歉,不,我的回复是在我完成之前发布的。 – Morph314

0

@Vityata

好吧,我得到它的工作....原来的编码没有打开Excel文件的第一部分,并切换回PowerPoint中(我想这如果只会工作只有1个展示开放添加以下代码...

则AppActivate “Microsoft PowerPoint中”

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

次试验(+) 昏暗xlApp作为对象 昏暗XL工作簿对象 设置xlApp =的CreateObject( “Excel.Application”)

xlApp.Visible =真

设置xlWorkBook = xlApp.Workbooks.Open( “文件路径\文件name.xlsm”,真,假)

设置xlApp =无 设置xlWorkBook =无 使用AppActivate “Microsoft PowerPoint中”

末次

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

0

如果您捕捉到你的宏在该文件。这仅仅是你的路径的字符串和文件名

'This is the macro file 
MacroFile = ActivePresentation.FullName 

然后你就可以使用该变量来激活只是具体的PowerPoint演示文稿。

使用演示(MACROFILE).Activate 或演示文稿(MACROFILE).Updatelinks

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

+0

谢谢,还有一个很好的留言......但是,包含宏的Powerpoint文件每个月都会有不同的名称,所以我将不得不每个月更改一次VBA。出于好奇,你会在“Dim xlWorkBook As Object”位后输入“MacroFile = ActivePresentation.FullName”部分? – Morph314

+0

无论文件名是什么,都会捕获当前活动演示文稿的文件名。因此,当您运行宏时,包含该宏的文件应该是活动的演示文稿。在宏的开头添加代码行。 – mooseman