2017-03-06 19 views
2

Excel 2010でVBAを使用するSharePoint上でPowerPointファイルを開くには、ファイルのURLの場所を渡します。私がログインしていなければ、資格情報を要求するので、それを開くことができます。SharePointからExcel VBA 2016を使用して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 
+0

私がこれを調べたところ、エラーはパワーポイントオブジェクトの作成に関連しています。私はそれが参照に関連しているかどうかはわかりませんが、エラー429が発生し、powerpointのアプリケーションを開こうとしています。 – Cyril

+0

私の場合、「Dim objPPT As PowerPoint.Application」を「Dim objPPT As Object」に変更したところ、PowerPointは正常に開かれましたが、Webサイトからファイルを開くことができません。申し訳ありませんが、私が唯一手助けできるもの –

+0

各サイト、リスト、フォルダなどに特定のユーザー権限があるので、SharePointで認証プロセスをスキップするのは難しいかもしれません。 WebDAVアドレスを使用してドキュメントライブラリをドライブ文字にマッピングして、コード内のライブラリにアクセスしようとしましたか?これは似たような質問です:http://stackoverflow.com/questions/12217680/open-sharepoint-excel-files-with-vba – BWMustang13

答えて

0

私は、ファイルを開く特定のファイル名を探して開いているすべての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 
関連する問題