Sharepoint ドキュメント ライブラリ アイテム (ファイル、フォルダー、およびサブフォルダー) を繰り返し処理し、すべてのフォルダーの内容を Excel シートに出力したい
マクロに次のコードがあります
Sub WriteFileProp(mySourcePath As String)
Dim objMyList As ListObject
Dim objWksheet As Worksheet
Dim strSPServer As String
Dim SERVER As String
Const LISTNAME As String = "Documents"
Const VIEWNAME As String = ""
SERVER = mySourcePath
' The SharePoint server URL pointing to
' the SharePoint list to import into Excel.
strSPServer = "http:" & SERVER & "/_vti_bin"
' Add a new worksheet to the active workbook.
Set objWksheet = Worksheets.Add
' Add a list range to the newly created worksheet
' and populated it with the data from the SharePoint list.
Set objMyList = objWksheet.ListObjects.Add(xlSrcExternal, _
Array(strSPServer, LISTNAME, VIEWNAME), False, , Range("A1"))
End Sub
そしてその機能
Dim objFSO As Object
Dim objFolder As Object
Dim ObjFile As Object
Dim SubFolder As Object
Dim pth As String
Dim WBn As Workbook
Dim ObCount As Long
Dim FileNme As String
Application.ScreenUpdating = False
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Get the folder object associated with the directory
Set objFolder = objFSO.GetFolder("//S1.S2.S3Portal/Shared%20Documents/")
Call WriteFileProp("S1.S2.S3Portal.com/")
'Print main view
For Each SubFolder In objFolder.SubFolders
Call WriteFileProp(SubFolder.Path)
Next
Call WriteFileProp("S1.S2.S3Portal.com/")
その後、サブフォルダーをループし、パスが提供されている ServerUrl と互換性がないまで、すべてが正常に機能します
objWksheet.ListObjects.Add(xlSrcExternal, _
Array(strSPServer, LISTNAME, VIEWNAME), False, , Range("A1"))
つまり、最初のサブフォルダー名が Software であるとします。そのパスは次の形式になります //S1.S2.S3Portal/Shared%20Documents/Software
しかし、ListObjects.Add は、 msdnに従ってその形式のみを受け入れます
strSPServer = http://S1.S2.S3Portal
ListName = "ドキュメント"
ビュー=""
とにかく、そのドキュメントのサブフォルダーの URL を維持するためにあります。ライブラリを開き、ListObjects.Add または同様の関数を使用してそれらを Excel ワークブックに追加します。