Получить содержимое папки sharepoint с помощью Excel VBA

Обычно я использую этот кусок кода для извлечения содержимого папки в VBA. Но это не работает в случае sharepoint. Как я могу сделать ?

Dim folder As folder Dim f As File Dim fs As New FileSystemObject Set folder = fs.GetFolder("//sharepoint.address/path/to/folder") For Each f In folder.Files 'Do something Next f 

EDIT (после хорошего комментария shahkalpesh):

Я могу получить доступ к sharepoint, если я введу адрес в Проводнике Windows. Доступ к sharepoint требует аутентификации, но он прозрачен, потому что он зависит от входа Windows.

Единственный способ, которым я нашел работу с файлами в SharePoint, имея права на сервер, – сопоставить папку WebDAV с буквой диска. Вот пример реализации.

Добавьте ссылки на следующие библиотеки ActiveX в VBA:

  • Модель объекта хоста Windows Script ( wshom.ocx ) – для WshNetwork
  • Время выполнения сценариев Microsoft ( scrrun.dll ) – для FileSystemObject

Создайте новый модуль classа, назовите его DriveMapper и добавьте следующий код:

 Option Explicit Private oMappedDrive As Scripting.Drive Private oFSO As New Scripting.FileSystemObject Private oNetwork As New WshNetwork Private Sub Class_Terminate() UnmapDrive End Sub Public Function MapDrive(NetworkPath As String) As Scripting.Folder Dim DriveLetter As String, i As Integer UnmapDrive For i = Asc("Z") To Asc("A") Step -1 DriveLetter = Chr(i) If Not oFSO.DriveExists(DriveLetter) Then oNetwork.MapNetworkDrive DriveLetter & ":", NetworkPath Set oMappedDrive = oFSO.GetDrive(DriveLetter) Set MapDrive = oMappedDrive.RootFolder Exit For End If Next i End Function Private Sub UnmapDrive() If Not oMappedDrive Is Nothing Then If oMappedDrive.IsReady Then oNetwork.RemoveNetworkDrive oMappedDrive.DriveLetter & ":" End If Set oMappedDrive = Nothing End If End Sub 

Затем вы можете реализовать его в своем коде:

 Sub test() Dim dm As New DriveMapper Dim sharepointFolder As Scripting.Folder Set sharepointFolder = dm.MapDrive("http://your/sharepoint/path") Debug.Print sharepointFolder.Path End Sub 

В дополнении к:

 myFilePath = replace(myFilePath, "/", "\") myFilePath = replace(myFilePath, "http:", "") 

также заменить пространство:

 myFilePath = replace(myFilePath, " ", "%20") 

Используйте UNC-путь, а не HTTP. Этот код работает:

 Public Sub ListFiles() Dim folder As folder Dim f As File Dim fs As New FileSystemObject Dim RowCtr As Integer RowCtr = 1 Set folder = fs.GetFolder("\\SharePointServer\Path\MorePath\DocumentLibrary\Folder") For Each f In folder.Files Cells(RowCtr, 1).Value = f.Name RowCtr = RowCtr + 1 Next f End Sub 

Чтобы получить путь UNC, перейдите в папку в библиотеке документов, откройте меню «Действия» и выберите «Открыть» в проводнике Windows. Скопируйте путь, который вы видите там, и используйте это.

ИМХО самый крутой путь – пройти через WebDAV (без сетевой папки, поскольку это часто не разрешено). Это может быть достигнуто с помощью объектов ActiveX Data Objects, изложенных в этой замечательной статье превосходной статьи (код можно использовать непосредственно в Excel, недавно использовала концепцию).

Надеюсь это поможет!

http://blog.itwarlocks.com/2009/04/28/accessing-webdav-in-microsoft-word-visual-basic/

исходная ссылка мертва, но по крайней мере текстовое содержимое по-прежнему доступно на сайте archive.org: http://web.archive.org/web/20091008034423/http://blog.itwarlocks.com/2009/04/28/ доступа к -WebDAV-в-майкрософт-слово-зрительно-основной

Я потратил некоторое время на эту самую проблему – я пытался проверить файл, существовавший до его открытия.

В конце концов, я придумал решение с использованием XML и SOAP – используйте метод EnumerateFolder и вытащите ответ XML с содержимым папки.

Я писал об этом здесь .

Преобразование дисков в sharepoint (также https)

Получение содержимого sharepoint работало для меня через сопоставленный диск, итерационируя его как объект файловой системы; трюк заключается в том, как настроить отображение: из sharepoint, открыть как проводник Затем скопируйте путь (строка с http *) (см. Ниже)

адрес в проводнике

Используйте этот путь в net use N: https:://thepathyoujustcopied карты из проводника или команды (т. net use N: https:://thepathyoujustcopied ). Примечание: https работает нормально с windows7 / 8, а не с XP.

Это может сработать для вас, но я предпочитаю другой подход, поскольку буквы дисков разные на каждом компьютере. Трюк здесь заключается в том, чтобы начать с sharepoint (а не из сценария VBA, обращающегося к sharepoint как веб-серверу).

Настройте соединение с данными на листе Excel

  • в sharepoint, выберите вид, который хотите контролировать.
  • экспорт в Excel (в 2010 году: библиотечные инструменты, libarry | экспорт в Excel) Экспорт в Excel
  • при просмотре этого превосходства вы найдете настройку источника данных (вкладка: данные, соединения, свойства, определение)

вкладка подключения

Вы можете включить этот запрос в vba или сохранить ссылку на базу данных в своем реестре, итерации по таблице VBA. Обратите внимание: на изображении выше не отображается фактическое соединение с базой данных (текст команды), в котором рассказывается, как получить доступ к моей sharepoint.

Я немного перепутал эту проблему и нашел очень простое решение с двумя строками, просто заменив «http» и все передние косые черты следующим образом:

 myFilePath = replace(myFilePath, "/", "\") myFilePath = replace(myFilePath, "http:", "") 

Это может не сработать для всех, но это сработало для меня

Если вы используете безопасный сайт (или хотите обслуживать оба), вы можете добавить следующую строку:

 myFilePath = replace(myFilePath, "https:", "") 

Попробуйте сопоставить библиотеку sharepoint с буквой диска в windowsх. Затем выберите диск и путь в вашем коде.

  • Восстановить пароль защиты листа в Excel
  • Задержки времени в VBA
  • Когда переменная Excel VBA должна быть убита или установлена ​​в Nothing?
  • В Excel я вставил кучу URL-адресов, но они не являются живыми ссылками - как я могу преобразовать их в живые ссылки?
  • Показывать или скрывать строки в листе excel при значении конкретной ячейки (excel 2007 и Windows 7)
  • Разбор JSON в Excel VBA
  • VBA потянув данные из SAP для манекенов
  • Excel vba для создания любой возможной комбинации диапазона
  • Определение того, является ли объект членом коллекции в VBA
  • Как удалить или изменить фон заполняет все таблицы в документе Microsoft Word
  • Основы того, как заставить процедуру VBA работать в excel при изменении ячейки
  • Interesting Posts

    Как объединить две таблицы в Excel с одинаковыми столбцами?

    Как я могу отобразить видеоstream RTSP на веб-странице?

    Как запустить maven из java?

    Получить окончательный сгенерированный источник HTML с помощью c # или vb.net

    Почему в Python нет понимания кортежа?

    Где я могу разместить свои учетные данные при использовании Ivy и репозитория частной компании?

    Получение полноэкранного режима в моем браузере с помощью jquery

    Как я могу поддерживать ModelState с RedirectToAction?

    Как исправить NoSuchMethodError?

    Как загрузить список файлов с файлового сервера?

    Как обновить PostgreSQL с версии 9.6 до версии 10.1 без потери данных?

    Мне нужно запустить JFrame из другого JFrame и запустить его как независимые приложения, помочь?

    Есть ли инструмент для поиска неучтенных функций (мертвый, устаревший код) в приложении C #?

    Опускание второго выражения при использовании сокращения if-else

    Что приводит к случайным изменениям значков рабочего стола на рабочем столе?

    Давайте будем гением компьютера.