Проверка файла VBA Sharepoint после загрузки

#excel #vba

#excel #vba

Вопрос:

Некоторое время использовал этот код для загрузки файла в SharePoint и на днях заметил, что при загрузке файла он автоматически извлекается для меня, и мне приходится заходить в SharePoint и вручную регистрироваться, чтобы другие могли просмотреть файл. Есть ли способ изменить или добавить в мой приведенный ниже код автоматическую проверку файла после его загрузки? Полностью в тупике, и любая помощь будет высоко оценена.

 Sub SharePointUpload()

Dim WSN
Dim spAdd

Set WSN = CreateObject("WScript.Network")
spAdd = "https://mysharepoint/test"
WSN.mapnetworkdrive "N:", spAdd

ActiveWorkbook.Save

Dim SharepointAddress As String
Dim LocalAddress As String
Dim objNet As Object
Dim FS As Object

' Where you will enter Sharepoint location path
SharepointAddress = "\mysharepointtest"
' Where you will enter the local file path
LocalAddress = "C:datasample_file.xlsm"
Set objNet = CreateObject("WScript.Network")
Set FS = CreateObject("Scripting.FileSystemObject")
If FS.FileExists(LocalAddress) Then
FS.CopyFile LocalAddress, SharepointAddress
Else: MsgBox "File does not exist!"
End If

Set objNet = Nothing
Set FS = Nothing

WSN.removenetworkdrive "N:"

End Sub
  

Ответ №1:

У меня была такая же проблема с нашей библиотекой документов SharePoint даже при отключенной опции Require Check Out — некоторые документы (Word, Excel) были загружены как извлеченные автоматически (зеленая стрелка), тогда как другие были фактически возвращены из загрузки. Более того, когда я хотел вручную проверить такие документы, я получил сообщение об ошибке об отсутствии обязательного поля, хотя в библиотеке не было поля, установленного как обязательный.

Причиной в моем случае было поле Title . Это поле представлено в библиотеке как текстовое поле по умолчанию, а также представлено в файлах Office. Я заметил, что для файлов Office с пустым полем Title документ автоматически извлекается во время загрузки. Когда загруженный документ содержал некоторый текст в Title свойстве, проверка не была установлена. Я также пытался использовать workflow для изменения Title , а затем извлечь файл (после создания), но это не сработало — для запуска рабочего процесса требовалась первоначальная регистрация. Ручное изменение свойств документа работает, но это слишком утомительно…

Первым программным вариантом для решения этой проблемы может быть заполнение Title свойства загруженного документа, когда оно пустое (т. Е. Добавление имени файла или любого другого текста). Должно хорошо работать со многими языками. Пример с Python:

 from docx import Document

path = 'D:/myfile.docx'
document = Document(path)
document_property = document.core_properties
if not document_property.title:
    document_property.title = 'Everything is Awesome'
document.save(path)  
  

В VBA Title должен быть доступен через Wb.BuiltinDocumentProperties("Title") .

Другим успешным вариантом для меня было найти столбец Title в столбцах библиотеки документов и переименовать его во что-то другое (я использовал Titlex в качестве нового имени), затем попытаться загрузить новый документ с пустым заголовком — на этот раз не было автоматической проверки загруженного документа. Тогда я мог бы Titlex вернуться к Title , не возвращая проблему.