Excel VBA для удаления записей из списка SharePoint - PullRequest
0 голосов
/ 28 мая 2019

Много раз выполнял поиски в Google по спискам удалений SharePoint VBA Sharepoint и спискам удалений Excel VBA Sharepoint. Большинство обращений, которые я получаю, связаны с добавлением или синхронизацией элементов в списке SharePoint.

Я нашел один результат, в котором говорилось об удалении списка и загрузке полного нового списка (что я и хочу сделать), но в нем говорилось, что, хотя это можно сделать, проблема в том, что новый список будет иметь другой GUID из предыдущий список, даже если они имеют одно и то же имя.

мой текущий процесс:

  1. Скачать файл Excel, который содержит индекс различных файлов
  2. Заполните новый столбец в соответствующих строках ссылкой на файл точки общего доступа, окруженный #
  3. Преобразование существующего индекса и нового столбца информации (с новым заголовком) в таблицу / список в Excel
  4. Загрузка / отправка / публикация индекса таблицы на Sharepoint

Кажется, все до шага 4 работает, а шаг 4 работает при условии, что Список ранее не существовал в Sharepoint.

Итак, поскольку я ранее создавал эти списки Sharepoint, как бы я удалил все содержимое? Следующим вопросом будет, как мне теперь загрузить новую таблицу из Excel? Во второй части я, вероятно, пройду все ссылки на добавленные элементы, которые я нашел при поиске, но я хотел начать с первого шага, который заключается в удалении содержимого предыдущего списка. Я включил вторую часть, поскольку она может повлиять на ответы людей о том, куда я направляюсь.

Текущий код публикации:

Sub PublishList(ListName As String, HeaderRow As Long, LastRow As Long, LastCol As Long)

'Converts an excel range to a table/list and
'creates a new SharePoint list and fills it
'with the information from the excel table

    Dim spList As ListObjects
    Dim newSPList As ListObject

    Set spList = ActiveSheet.ListObjects

'converts Excel data in a specified range to a list
    Set newSPList = spList.Add(xlSrcRange, Range(Cells(HeaderRow, 1), Cells(LastRow, LastCol + 1)), True, xlYes)

'define the name of the new list/table in excel
    newSPList.Name = "IndexTable"

'sends the excel list to defined sharepoint site
'and provided sharepoint list name
    newSPList.Publish Array("http://my.company.com/subsite/", ListName), True

End Sub

Список GUID , сохраненный в другой функции, если это имеет значение:

Function GUID(Foldername As String) As String

    Foldername = Left(Foldername, Len(Foldername) - 1)
    Foldername = RIght(Foldername, Len(Foldername) - InStrRev(Foldername, "\"))

    Select Case Foldername
        Case "OPSS"

            GUID = "{60b2cf30-2e07-4652-a2fd-bba87fb4b368}"

        Case "SSP"

            GUID = "{16163312-6f3c-4a93-ba9b-37ddcc3131f6}"

        Case "OPSD"

            GUID = "{60b2cf30-2e07-4652-a2fd-bba87fb4b368}"

        Case "MTOD"

            GUID = "{1cbfd361-e41e-43a2-ac7d-fb5b5e95309f}"

        Case "SSD"

            GUID = "{acb234ec-f37a-4587-83ec-ddb644c5b255}"

        Case "West", "Eastern", "Northeastern", "Northwestern", "Head Office"

            GUID = "{09183dd4-f4e1-4a94-b881-39c8426a4c79}"

    End Select
End Function

Вопрос:

Как удалить содержимое списка SharePoint, чтобы его можно было полностью заменить новым списком из Excel?

Другие вопросы, на которые я смотрел:

https://sharepoint.stackexchange.com/questions/93181/add-and-update-single-item-in-sharepoint-list-via-vba

Добавление данных в список Sharepoint 2013 из Excel с помощью VBA

https://social.msdn.microsoft.com/Forums/en-US/b4f51295-1030-4aa3-bf70-09471c410124/how-to-update-sharepoint-list-from-excel-spreadsheet-using-vba?forum=sharepointdevelopmentprevious

У меня также есть секция добавления записей, над которой я все еще работаю, так что на этом этапе ее очень много:

Sub addnewRec_ref_to_link()

    Dim cnt As ADODB.Connection
    Dim rst As ADODB.Recordset 'tb

    Set cnt = New ADODB.Connection
    Set rst = New ADODB.Recordset

    filelink = [D11].Text 'this is the array to be link from previous function
    filecaption = [D8].Text

    mySQL = "SELECT * FROM [sptb];"

    With cnt
        .ConnectionString = _
        "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;DATABASE=http://my.company.com/subsite/;LIST={cadce7b5-f161-4853-898c-89d8efeb4c0d};"
        .Open
    End With

    rst.Open mySQL, cnt, adOpenDynamic, adLockOptimistic

    rst.AddNew
        rst.Fields("Title") = Sheets("Sheet1").Range("D4").Text
        rst.Fields("FileLink") = filecaption & filelink
    rst.Update

    If CBool(rst.State And adStateOpen) = True Then
        rst.Close
    End If
    Set rst = Nothing
    If CBool(cnt.State And adStateOpen) = True Then
        cnt.Close
    End If

    Set cnt = Nothing
    MsgBox "Complete!"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...