Как я могу прочитать свойство тега файла Sharepoint, используя VBA? - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь прочитать свойство тега файлов, расположенных в папке на сайте SharePoint. У меня есть код, который работает при использовании его против локальных каталогов. Однако после того, как я изменил эти пути к каталогам SharePoint, код не будет работать, потому что внезапно он действует так, как будто эти файлы не имеют тегов. Кто-нибудь может объяснить это мне, пожалуйста? Мой код ниже:

Dim path As String
Dim FSO As New FileSystemObject
Dim obj_folder As Object
Dim obj_subfolder As Object
Dim subfolders As Object
Dim oDetails As Object
Dim file As Object
Dim lrow As Long
Dim i As Long
Dim x As Long
Dim y As Long
Dim z As Long

path = "\\sharepointpath.com\somefolder\blah folder\"
Set FSO = CreateObject("Scripting.filesystemobject")
Set obj_folder = FSO.GetFolder(path)
Set subfolders = obj_folder.subfolders
lrow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

i = 1
y = 0
z = 0
For x = 1 to 1000000
   For Each obj_subfolder In obj_folder.subfolders
      For Each file In obj_subfolder.FILES
         Set oDetails = GetDetails(file.Path)
         Debug.Print oDetails("Tags")
         If Instr(1, oDetails("Tags"), "EDGE") > 0 Then
            z = z + 1
         End If
      Next file
   Next obj_subfolder
Next x
End Sub
------------------------------------------------------------------------
Public Function GetDetails(sPath as String)
   Dim sFolderName As Variant
   Dim sFileName As Variant
   Dim oShell As Object
   Dim oFolder As Object
   Dim oFile As Object
   Dim oDetails As Object
   Dim i As Long
   Dim sName As Variant
   Dim sValue As Variant

   Call SplitFullPath(sPath, sFolderName, sFileName)
   Set oShell = CreateObject("Shell.Application")
   Set oFolder = oShell.Namespace(sFolderName)
   Set oFile = oFolder.ParseName(sFileName)
   Set oDetails = CreateObject("Scripting.Dictionary")

   For i = 0 To 511
      sName = oFolder.GetDetailsOf(oFolder.Items, i)
      sValue = oFolder.GetDetailsOf(oFile, i)
      If sName <> "" And sValue <> "" Then
         oDetails(sName) = sValue
      End If
   Next
   Set GetDetails = oDetails
---------------------------------------------------------------------------
Public Sub SplitFullPath(sPath As String, sFolderName As Variant, sFileName As Variant)
   With CreateObject("Scripting.FileSystemObject")
      If Not .FileExists(sPath) Then
         Exit Sub
      End If
      sFolderName = .GetParentFolderName(sPath)
      sFileName = .GetFileName(sPath)
   End With
End Sub

Поэтому, когда я запускаю этот код с использованием локального пути, моя отладка показывает мне теги для каждого файла, как и ожидалось. Однако, когда я запускаю этот код с использованием пути SharePoint, моя отладка показывает пустую строку вместо тегов файла (я использую одни и те же файлы в обоих местах, поэтому они должны быть одинаковыми). Может кто-нибудь, пожалуйста, помогите? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...