Много раз выполнял поиски в Google по спискам удалений SharePoint VBA Sharepoint и спискам удалений Excel VBA Sharepoint. Большинство обращений, которые я получаю, связаны с добавлением или синхронизацией элементов в списке SharePoint.
Я нашел один результат, в котором говорилось об удалении списка и загрузке полного нового списка (что я и хочу сделать), но в нем говорилось, что, хотя это можно сделать, проблема в том, что новый список будет иметь другой GUID из предыдущий список, даже если они имеют одно и то же имя.
мой текущий процесс:
- Скачать файл Excel, который содержит индекс различных файлов
- Заполните новый столбец в соответствующих строках ссылкой на файл точки общего доступа, окруженный #
- Преобразование существующего индекса и нового столбца информации (с новым заголовком) в таблицу / список в Excel
- Загрузка / отправка / публикация индекса таблицы на 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