teams recibir notificar notificaciones enviar desde desactivar crear correos correo alertas sharepoint excel vba

sharepoint - notificar - recibir notificaciones de teams



Obtenga el contenido de una carpeta sharepoint con Excel VBA (8)

En mi humilde opinión, la mejor manera es ir a través de WebDAV (sin la carpeta de red, ya que a menudo no está permitido). Esto se puede lograr a través de ActiveX Data Objects como se describe en este artículo excelente artículo excelente (el código se puede usar directamente en Excel, utilizó el concepto recientemente).

¡Espero que esto ayude!

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

el enlace original está muerto, pero al menos el contenido textual todavía está disponible en archive.org: http://web.archive.org/web/20091008034423/http://blog.itwarlocks.com/2009/04/28/ accessing-webdav-in-microsoft-word-visual-basic

Usualmente uso este fragmento de código para recuperar el contenido de una carpeta en VBA. Pero esto no funciona en el caso de un punto compartido. Como lo puedo hacer ?

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

EDITAR (después de un buen comentario de shahkalpesh):

Puedo acceder al sharepoint si ingreso la dirección en Windows Explorer. El acceso al punto compartido necesita una autenticación, pero es transparente, ya que depende del inicio de sesión de Windows.


Intente mapear la biblioteca de SharePoint en una letra de unidad en Windows. Luego seleccione la unidad y la ruta en su código.


La única forma en que he encontrado que trabajar con archivos en SharePoint teniendo en cuenta los derechos del servidor es asignar la carpeta WebDAV a una letra de unidad. Aquí hay un ejemplo para la implementación.

Agregue referencias a las siguientes bibliotecas ActiveX en VBA:

  • Modelo de objetos de host de Windows Script ( wshom.ocx ) - para WshNetwork
  • Microsoft Scripting Runtime ( scrrun.dll ) - para FileSystemObject

Cree un nuevo módulo de clase, DriveMapper y agregue el siguiente código:

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

Entonces puedes implementarlo en tu código:

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


Pasé un tiempo con este problema: estaba intentando verificar que existía un archivo antes de abrirlo.

Eventualmente, se me ocurrió una solución usando XML y SOAP: use el método EnumerateFolder y obtenga una respuesta XML con los contenidos de la carpeta.

Blogé sobre esto aquí .


Además de:

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

también reemplaza el espacio:

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


Mapeo de la unidad a compartir (también https)

Conseguir que los contenidos de Sharepoint funcionen para mí a través de la unidad mapeada iterándolo como un objeto de sistema de archivos; truco es cómo configurar el mapeo: Luego copie la ruta (línea con http *) (ver a continuación)

Utilice esta ruta en Unidad de mapa desde el explorador o comando (es decir, net use N: https:://thepathyoujustcopied ) Nota: https funciona bien con windows7 / 8, no con XP.

Eso puede funcionar para usted, pero prefiero un enfoque diferente, ya que las letras de unidad son diferentes en cada PC. El truco aquí es comenzar desde sharepoint (y no desde un script de VBA accediendo a sharepoint como un servidor web).

Configurar una conexión de datos a la hoja de Excel

  • en sharepoint, vaya a la vista que desea monitorear
  • exportar vista para sobresalir (en 2010: herramientas de biblioteca; libarry | exportar a Excel)
  • Al visualizar este Excel, encontrará una configuración de fuente de datos (pestaña: datos, conexiones, propiedades, definición)

Puede incluir esta consulta en vba o mantener el enlace de la base de datos en su hoja de cálculo, iterando sobre la tabla por VBA. Tenga en cuenta: la imagen de arriba no muestra la conexión real de la base de datos (texto del comando), que le indicará cómo acceder a mi recurso compartido.


Me metí con este problema por un tiempo, y encontré una solución muy simple de 2 líneas, simplemente reemplazando el ''http'' y todas las barras diagonales así:

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

Puede que no funcione para todos, pero funcionó para mí

Si está utilizando un sitio seguro (o desea atender ambos), puede agregar la siguiente línea:

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


Use la ruta UNC en lugar de HTTP. Este código funciona:

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

Para utilizar la ruta UNC, vaya a la carpeta en la biblioteca de documentos, abra el menú Acciones y elija Abrir en el Explorador de Windows. Copie la ruta que ve allí y use eso.