【问题标题】:Open Powerpoint file using Excel VBA 2016 from SharePoint从 SharePoint 使用 Excel VBA 2016 打开 Powerpoint 文件
【发布时间】:2017-07-26 17:50:23
【问题描述】:

在 Excel 2010 中使用 VBA,我可以通过传递文件的 URL 位置在 SharePoint 上打开 PowerPoint 文件。如果我没有登录,它会提示我输入我的凭据,以便它可以打开它。

但是,在 Excel 2016 中,当我收到在 SharePoint 上打开 Excel 文件的提示时,我在打开 PowerPoint 文件时没有收到提示。相反,我只是收到一个运行时错误“-2147467259 (80004005)”,意思是未经过身份验证。如果我先登录 SharePoint,然后运行它打开的宏,但我不希望这样。关于如何将提示带回 PowerPoint 的任何建议?

Sub OpenPowerPointFile()
    Dim objPPT As PowerPoint.Application
    Dim objPres As Object
    Set objPPT = CreateObject("Powerpoint.Application")
    objPPT.Visible = True

    Set objPres = objPPT.Presentations.Open("https://spsite.com/report_template.pptx")

End Sub

【问题讨论】:

  • 根据我对此的调查,该错误与创建 powerpoint 对象有关。我不确定它是否与参考有关,但我只是尝试打开一个 powerpoint 应用程序时收到错误 429。
  • 就我而言,我已将“dim objPPT As PowerPoint.Application”修改为“Dim objPPT As Object”,然后 PowerPoint 可以正常打开,但无法从网站打开文件。对不起,我只能帮上忙
  • 可能很难跳过 SharePoint 中的身份验证过程,因为每个网站、列表、文件夹等都有特定的用户权限。您是否尝试过使用 WebDAV 地址将文档库映射到驱动器号以访问代码中的库?这是一个类似的问题:stackoverflow.com/questions/12217680/…
  • 我在尝试映射驱动器之前遇到了我们的一个位置的问题,所以我一直远离它。不过建议很好。

标签: vba excel sharepoint


【解决方案1】:

我能够通过打开文件,循环所有打开的 PPT 文档来寻找特定的文件名,然后将其分配给一个对象变量来解决这个问题。

Private Function openPowerPointPresentationFromURL(filePath As String, fileName As String) As PowerPoint.Presentation

    Dim ppProgram As PowerPoint.Application
    Dim ppCount As Integer
    Dim i As Integer

    On Error GoTo ErrHandler

    ' Open the file 
    ThisWorkbook.FollowHyperlink (filePath)        

    ' Set the object by looping through all open PPT files and look for the passed file name
    Set ppProgram = GetObject(, "PowerPoint.Application")            
    ppCount = ppProgram.Presentations.Count
    For i = 1 To ppCount + 1
        If ppProgram.Presentations.Item(i).Name = fileName Then
            Set openPowerPointPresentationFromURL = ppProgram.Presentations.Item(i)
            Exit Function
        End If
    Next i
    On Error GoTo 0

ErrHandler:
    MsgBox "There was an error opening the PowerPoint template that is required for this report."
    On Error GoTo 0

End Function

【讨论】:

  • 是否可以在打开 power point 文件时提供用户名和密码?实际上,Power point 仅可用于查看,并且只有一个用户可以编辑文件,我想在代码中绑定该用户名和密码,以便它能够以编程方式打开 ppt 并进行一些更改
  • 不,您不能轻易传递用户名和密码来打开文件,因为 PowerPoint 不处理身份验证过程。您能够处理此问题的唯一方法是与网站交互,这意味着创建一个查找特定窗口的子例程,然后输入用户名和密码并单击提交。但是,如果当前用户已经登录到该网站,您首先需要将其注销,然后他们必须手动重新登录。如果您找到其他方法,请回帖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 2020-11-04
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多