Невозможно добавить записи в список Sharepoint из Excel VBA с помощью общей ссылки

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

Базовый URL-адрес списка Sharepoint выглядит примерно так: https://myorg.sharepoint.com/personal/myname/;LIST=SubmissionsTest;

Однако эта ссылка работает только для меня. Если я попытаюсь поделиться списком с людьми в моей компании, Sharepoint предоставит мне ссылку, которая выглядит следующим образом: https://myorg.sharepoint.com/:l:/g/personal/myname/arandom50charactertextstring

Тестовые пользователи подтвердили, что могут получить доступ к списку по второй ссылке, но не по первой.

Чтобы вставить записи в список из Excel, я создал следующий код VBA:

Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim mySQL As String

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

mySQL = "SELECT * FROM SubmissionsTest;"

With cnt
    .ConnectionString = _
    "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes;" _
    & "DATABASE=https://myorg.sharepoint.com/personal/myname/;LIST=SubmissionsTest;"
    .Open
End With
rst.Open mySQL, cnt, adOpenDynamic, adLockOptimistic

rst.AddNew
    rst.Fields("Title") = Int(Now() * 100000)
    rst.Fields("testEntry") = "This is a test submission"
    rst.Fields("testSubmitter") = Environ("UserName")
rst.Update

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

MsgBox "Your submission has been received."

Этот код отлично работает, когда я его запускаю. Как и ожидалось, он не работает для моих тестовых пользователей. Однако, когда я пытаюсь заменить эту вторую ссылку, предоставленную Sharepoint, в строку подключения, код больше не работает ни у меня, ни у моих тестовых пользователей. Вместо этого мы получаем ошибки, сообщающие нам, что объект SubmissionsTest не может быть найден.

Мне еще предстоит выяснить, как я могу настроить этот код, чтобы ссылка Shareable распознавалась. Есть ли у кого-нибудь идеи о том, как это можно реализовать?

Спасибо заранее за любые предложения.

Обмен ссылками и прямые разрешения могут работать по-разному в этом контексте. Пробовали ли вы предоставить прямой доступ к списку своим коллегам?

Tim Williams 28.11.2022 23:14

Тиму Уильямсу: проблема в том, что у меня 80 000 коллег, и любому из них может понадобиться использовать эту форму. Мне нужно открыть его, чтобы им мог пользоваться кто-нибудь в фирме.

Allen R. Brady 29.11.2022 05:19

У вас 80 тысяч коллег и нет администраторов SharePoint?

Tim Williams 29.11.2022 07:46

Вот вкратце проблема. SharePoint считается технологией «самообслуживания». У нас есть возможность создавать собственные сайты SharePoint через Teams, но формальной поддержки для этого нет. Если мы его используем, мы должны выяснить, как реализовать его самостоятельно.

Allen R. Brady 29.11.2022 23:00

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

Tim Williams 29.11.2022 23:08
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
5
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ОК, я нашел решение после изучения этого сообщения на форумах Microsoft: -record-to-an-existing-sharepoint-online-list?forum=sharepointgeneral

Как указано в приведенном выше коде, строка подключения, которую я пытался использовать, была:

DATABASE=https://myorg.sharepoint.com/personal/myname/;LIST=SubmissionsTest;

Даже после предоставления доступа к списку Sharepoint любому сотруднику фирмы Excel сообщил, что не смог найти таблицу «SubmissionsTest». По рекомендации поста выше я просмотрел значения GUID для списка. Это вернуло строку, которая выглядела примерно так:

<LIST><VIEWGUID>alongstringofalphanumericcharacters</VIEWGUID>
<LISTNAME>anotherstringofcharacters</LISTNAME>
<LISTWEB>https://myorg.sharepoint.com/personal/myname/</LISTWEB>
<LISTSUBWEB></LISTSUBWEB><ROOTFOLDER></ROOTFOLDER></LIST>

Как только я изменил строку подключения на это:

DATABASE=https://myorg.sharepoint.com/personal/myname/;LIST = {anotherstringofcharacters};

код теперь работает для всех. Я пришел к выводу, что в SharePoint O365 именам таблиц нельзя доверять. Иногда на значения GUID необходимо ссылаться напрямую.

Другие вопросы по теме