Dim ppApp As PowerPoint.Application
Dim prsPres As PowerPoint.Presentation
ppApp = New PowerPoint.Application
prsPres = ppApp.Presentations.Open("C:\test.ppt", Microsoft.Office.Core.MsoTriState.msoFalse,   Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse)'不知道为什么直接prsPres = ppApp.Presentations.Open("C:\test.ppt")将会出错。open方法默认最后的参数WithWindows为True,要设为False才行ppApp.visible=true
MsgBox(prsPres.TemplateName)prsPres.Close()
ppApp.Quit()此时能够看出Powerpoint应用程序启动了,但是黑黑的片没有打开演示文稿
但MsgBox(prsPres.TemplateName)确实能读出正确的值,说明已经打开C:\test.ppt了

解决方案 »

  1.   

    Call Shell("explorer F:\Lytemp\健全三级管理服务体系(080505-1).ppt", vbNormalFocus)或者:Option Explicit
    Private Const SW_SHOW = 5
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()
            ShellExecute Me.hwnd, "open", "POWERPNT.EXE", "F:\Lytemp\健全三级管理服务体系(080505-1).ppt", "", SW_SHOW
    End Sub
      

  2.   

    嗯。
    这样的话我没试过,但如果这样的话就失去我的目的了
    本来我是想用VBA的类库打开PowerPoint文档,出操作题给用户做,所以此时演示文稿对于用户要是可见的,那么因为是VBA打开的所以用户提交时也能很好地读出演示文稿各种参数来判断对错现在打开演示文稿,判断对错都可以了,就是不能让它可视化打开搞不懂那open函数明明对Word,Excel都可以,这里就出现问题了我试试你的方法,如果可以的话,先不用VBA打开而是按你的方法可视化打开让用户看到能操作了,提交时再关闭,再用VBA打开判定操作结果....只能这样了....
      

  3.   

    你的代码能过吗?对象不用SET,直接赋值啊?
      

  4.   

    楼上
    那是VB.NET代码不用set的
      

  5.   

    一楼的朋友
    你第二种方法打不开啊
    第一种的话在浏览器打开就只能浏览了System.Diagnostics.Process.Start("C:\test.ppt")
    可以打开但我不知道怎么再用程序去关闭它
      

  6.   

    不会吧!
    下面这个所有文件类型都通用,调用后,会弹出一个对话框,单击“打开”即可,Windows会找到相应的程序去打开。
    Call Shell("explorer F:\Lytemp\健全三级管理服务体系(080505-1).ppt", vbNormalFocus)还有,如果不需要读取数据什么的,不像Excel,打开文档后要用VB读取表中数据,那就用我的第三种办法。
      

  7.   

    啊...我就说你这种方法会Call到IE浏览器去打开这PPT,那么就这ppt就不能操作了我需要是
    程序打开ppt->用户操作ppt->用户按下提交按钮->程序关闭ppt->再用VBA不可视打开这ppt->再读取它里面的属性->再关闭它
    其中不知道怎么可视可操作打开(System.Diagnostics.Process.Start("C:\test.ppt")ok了) ,并以程序关闭
    不知道System.Diagnostics.Process.Start是否有对应的关闭方法...
      

  8.   

    你没有创建对象,直接用System.Diagnostics.Process.Start打开,只能手工关闭。
    如果创建了对象,可以用对象关闭,如下面你写的:
    prsPres.Close 
    ppApp.Quit 
      

  9.   

    参考:
    http://topic.csdn.net/t/20060620/09/4831485.html