Не удается сохранить файл в Sharepoint Online с помощью VBA (ошибка разрешений)

Я один из первых использую VBA. У меня есть командная кнопка, которая должна сохранять файл как на моей странице онлайн-документов sharepoint. Я могу использовать «службы Excel» и сохранять на этой странице документов из Excel вручную, но когда я пробую то же самое в VBA, он говорит, что у меня нет разрешения. Ниже приведен код, который я использую, мы будем очень признательны за любые советы!

Private Sub CommandButton1_Click()

    Dim path as string
    dim filename1 as string

    path = "https://xxxxxx.sharepoint.com/sites/xxxxx/Shared Documents"
    filename1 = Range("B3").text
    activeworkbook.SaveAs FileName:=path & filename1 & ".xlsx", _
                          FileFormat:=xlopenxmlworkbook

End Sub

person sbvt802    schedule 11.07.2017    source источник
comment
@OP сработало ли это решение для вас?   -  person ERT    schedule 11.07.2017
comment
Это сработало! Большое спасибо за помощь, очень признателен.   -  person sbvt802    schedule 11.07.2017


Ответы (1)


Если ваш текущий файл находится в той же папке, что и место назначения, в котором вы хотите сохранить, попробуйте это изменение для определения path:

path = "https://xxxxxx.sharepoint.com/sites/xxxxx/Shared Documents/"

Отсутствие последнего / в вашем коде приводит к тому, что аргумент FileName недействителен, потому что path & filename1 & ".xlsx" оценивается как

https://xxxxxx.sharepoint.com/sites/xxxxx/Shared Documents[filename1].xlsx

Это означает, что если бы разрешения не были ограничены для папки /xxxxx, вы бы написали книгу Excel с плохим именем в этом месте.


АЛЬТЕРНАТИВНОЕ РЕШЕНИЕ


Возможно другое решение вашей проблемы. Сохраните пустую книгу в том месте, где вы хотите сохранить новые файлы Excel. Откройте пустой файл Excel и запустите там свой макрос. Измените строку path на:

path = ActiveWorkbook.Path & "\"

Попробуйте это, чтобы увидеть, работает ли это вместо этого. Вот как я решил проблемы с разрешениями Sharepoint.

person ERT    schedule 11.07.2017
comment
В этом случае OP забыл добавить последний /. Я могу редактировать сейчас. Он все равно будет работать для OP, даже если доступ из Sharepoint. - person ERT; 11.07.2017
comment
Ах, теперь я понимаю. OP пытается сохранить в https://xxxxxx.sharepoint.com/sites/xxxxx/Shared DocumentsMyAwesomeWorkbook.xlsm - person Mathieu Guindon; 11.07.2017
comment
Верно. Мое первоначальное предложение сработало бы нормально, если бы OP пытался сохранить новый файл из существующего файла в расположении точки доступа. Это решение также будет работать нормально, но оно не является надежным (оно работает только для этого одного местоположения, а не для многих). - person ERT; 11.07.2017
comment
Проголосовали, но я бы просто поставил последнюю косую черту в первом строковом литерале; здесь нет необходимости выделять 3 строки (одну для URI, одну для косой черты, одну для объединенной строки). path = "https://xxxxxx.sharepoint.com/sites/xxxxx/Shared Documents/" было бы так же хорошо, и выделяет только 1 строку, которая ему нужна. - person Mathieu Guindon; 11.07.2017
comment
Теперь он работает правильно и сохраняется на моей странице документов sharepoint. Большое спасибо вам обоим за помощь новичку. - person sbvt802; 11.07.2017