Сохранить файл в SharePoint с установленным типом документа

Вопрос или проблема

Я хотел бы сохранить файл Excel (с использованием макросов) на SharePoint и поместить его в нужное место. Я много искал в интернете, но не смог найти решение, которое меня интересует.

1) Шаг 1: Сохраните документ на SharePoint (это работает):

Dim all variables

SPExcelFile = SPlocation & "/" & Year(Date) & "_" & Month(Date) & "_" & Day(Date) & "_" & Split(ThisWorkbook.Name, ".")(0) & ".xlsm"
SPPdfFile = SPlocation & "/" & Year(Date) & "_" & Month(Date) & "_" & Day(Date) & "_" & Split(ThisWorkbook.Name, ".")(0) & ".pdf"
ThisWorkbook.SaveAs Filename:=SPExcelFile, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SPPdfFile

2) Шаг 2: Сохраните документ и установите свойства.

Вот то, что я ищу, я думаю, что мне просто нужно добавить немного кода к Шагу 1, чтобы добавить свойства. Но в данный момент мне нужно вручную изменить следующие свойства: тип содержимого и тип документа для обслуживания.

Кто-нибудь знает, как это сделать в макросе, чтобы это можно было автоматизировать?

Ответ или решение

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

Шаг 1: Сохраните документ на SharePoint

Ваш код для сохранения файла Excel на SharePoint уже корректен и выглядит хорошо. Убедитесь, что все переменные и пути указаны верно. Приведенный вами код для сохранения файла выглядит следующим образом:

Dim all_variables

SPExcelFile = SPlocation & "/" & Year(Date) & "_" & Month(Date) & "_" & Day(Date) & "_" & Split(ThisWorkbook.Name, ".")(0) & ".xlsm"
SPPdfFile = SPlocation & "/" & Year(Date) & "_" & Month(Date) & "_" & Day(Date) & "_" & Split(ThisWorkbook.Name, ".")(0) & ".pdf"
ThisWorkbook.SaveAs Filename:=SPExcelFile, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SPPdfFile

Шаг 2: Установите свойства документа

Для автоматизации установки свойств документа в SharePoint, таких как "Content Type" и "Maintenance Document Type", вы можете воспользоваться библиотекой Microsoft XMLHTTP для выполнения REST-запросов к API SharePoint. Это позволит вам обновить метаданные файла после его сохранения. Пример кода:

Sub SetSharePointProperties()

    Dim xmlHttp As Object
    Dim SharePointSite As String
    Dim SPExcelFile As String
    Dim RequestUrl As String
    Dim jsonRequest As String

    ' Задайте нужные значения
    SharePointSite = "https://example.sharepoint.com/sites/yoursite/"
    SPExcelFile = "Documents/" & Year(Date) & "_" & Month(Date) & "_" & Day(Date) & "_" & Split(ThisWorkbook.Name, ".")(0) & ".xlsm"
    RequestUrl = SharePointSite & "_api/web/GetFileByServerRelativeUrl('/sites/yoursite/" & SPExcelFile & "')/ListItemAllFields"

    ' Создайте объект для http-запроса
    Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
    xmlHttp.Open "POST", RequestUrl, False

    ' Добавьте заголовки
    xmlHttp.setRequestHeader "Accept", "application/json;odata=verbose"
    xmlHttp.setRequestHeader "Content-Type", "application/json;odata=verbose"
    xmlHttp.setRequestHeader "IF-MATCH", "*"
    xmlHttp.setRequestHeader "X-HTTP-Method", "MERGE"

    ' Создайте JSON-объект для обновления метаданных
    jsonRequest = "{ '__metadata': { 'type': 'SP.Data.DocumentsItem' }, 'ContentTypeId': '0x0101', 'MaintenanceDocumentType': 'YourValueHere' }"

    ' Отправьте запрос
    xmlHttp.send jsonRequest

    If xmlHttp.Status = 204 Then
        MsgBox "Свойства успешно обновлены!"
    Else
        MsgBox "Ошибка при обновлении свойств: " & xmlHttp.Status & " " & xmlHttp.statusText
    End If

End Sub

Объяснение кода

  1. Свойства объектов и JSON: Запрос формируется с использованием MSXML2.XMLHTTP, который позволяет отправлять HTTP-запросы. Обратите внимание на формат JSON, который указывает на метаданные файла и новые значения, которые вы хотите установить.

  2. Настройка заголовков: Заголовки, как Accept, Content-Type, IF-MATCH и X-HTTP-Method, необходимы для успешного выполнения REST-запроса к SharePoint.

  3. Обработка ответа: После отправки запроса проверяется статус. Если статус равен 204, это означает, что запрос прошел успешно, и свойства документа обновлены.

Заключение

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

Не забудьте протестировать ваш макрос в безопасной среде, прежде чем использовать его в производственной среде.

Оцените материал
Добавить комментарий

Капча загружается...