para - Abra un archivo de Excel desde el sitio de SharePoint
no se puede abrir el documento para editarlo sharepoint 2010 (6)
Pruebe algo como esto:
Shell ("C:/Program Files/Internet Explorer/iexplore.exe http://sharepoint/my/file/path")
Funcionó para mí
Estoy tratando de abrir un archivo de Excel desde SharePoint usando VBA. Debido a que el archivo que estoy buscando puede ser diferente cada vez que ejecuto la macro, quiero poder ver la carpeta de SharePoint y seleccionar el archivo que necesito.
El código siguiente funciona bien cuando quiero buscar un archivo en una unidad de red, sin embargo, cuando lo reemplazo con una dirección de SharePoint obtengo el "error en tiempo de ejecución 76: Ruta no encontrada".
Sub Update_monthly_summary()
Dim SummaryWB As Workbook
Dim SummaryFileName As Variant
ChDir "http://sharepoint/my/file/path"
SummaryFileName = Application.GetOpenFilename("Excel-files,*.xls", _
1, "Select monthly summary file", , False)
If SummaryFileName = False Then Exit Sub
Set SummaryWB = Workbooks.Open(SummaryFileName)
End Sub
Cuando pego esta dirección en el Explorador de Windows, no tengo problemas para acceder a la carpeta de SharePoint, así que sé que la ruta es correcta.
¿Por qué no le gusta a VBA?
Desde su script, no use http://sharepoint/my/file
como ruta, sino //sharepoint/my/file
y luego debería funcionar. Funciona para mis programas hechos en C #.
Transformo la URL en una dirección WebDAV usando la siguiente función que creé. Esta función también devuelve intactas las rutas regulares del sistema y las rutas UNC.
Llame a esta función agregándola a un módulo en su proyecto VBA e ingresando MyNewPathString = ParseResource(myFileDialogStringVariable)
justo después de su comando de diálogo de archivo y antes de usar la ruta seleccionada por el cuadro de diálogo del archivo. Luego, haga referencia a "MyNewPathString" cuando use la ubicación del archivo de destino.
Public Function Parse_Resource(URL As String)
''Uncomment the below line to test locally without calling the function & remove argument above
''Dim URL As String
Dim SplitURL() As String
Dim i As Integer
Dim WebDAVURI As String
''Check for a double forward slash in the resource path. This will indicate a URL
If Not InStr(1, URL, "//", vbBinaryCompare) = 0 Then
''Split the URL into an array so it can be analyzed & reused
SplitURL = Split(URL, "/", , vbBinaryCompare)
''URL has been found so prep the WebDAVURI string
WebDAVURI = "//"
''Check if the URL is secure
If SplitURL(0) = "https:" Then
''The code iterates through the array excluding unneeded components of the URL
For i = 0 To UBound(SplitURL)
If Not SplitURL(i) = "" Then
Select Case i
Case 0
''Do nothing because we do not need the HTTPS element
Case 1
''Do nothing because this array slot is empty
Case 2
''This should be the root URL of the site. Add @ssl to the WebDAVURI
WebDAVURI = WebDAVURI & SplitURL(i) & "@ssl"
Case Else
''Append URI components and build string
WebDAVURI = WebDAVURI & "/" & SplitURL(i)
End Select
End If
Next i
Else
''URL is not secure
For i = 0 To UBound(SplitURL)
''The code iterates through the array excluding unneeded components of the URL
If Not SplitURL(i) = "" Then
Select Case i
Case 0
''Do nothing because we do not need the HTTPS element
Case 1
''Do nothing because this array slot is empty
Case 2
''This should be the root URL of the site. Does not require an additional slash
WebDAVURI = WebDAVURI & SplitURL(i)
Case Else
''Append URI components and build string
WebDAVURI = WebDAVURI & "/" & SplitURL(i)
End Select
End If
Next i
End If
''Set the Parse_Resource value to WebDAVURI
Parse_Resource = WebDAVURI
Else
''There was no double forward slash so return system path as is
Parse_Resource = URL
End If
End Function
Esta función verificará si su ruta de archivo es una URL y si es segura (HTTPS) o no segura (HTTP). Si es una URL, construirá la cadena WebDAV apropiada para que pueda vincular directamente al archivo de destino en SharePoint.
El usuario probablemente recibirá credenciales cada vez que se abra el archivo, especialmente si no están ubicados en el mismo dominio que su granja de servidores de SharePoint.
TENGA EN CUENTA: No he probado esto con un sitio http, sin embargo, estoy seguro de que funcionará.
Pruebe este código para elegir un archivo de un sitio de SharePoint:
Dim SummaryWB As Workbook
Dim vrtSelectedItem As Variant
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = "https://sharepoint.com/team/folder" & "/"
.AllowMultiSelect = False
.Show
For Each vrtSelectedItem In .SelectedItems
Set SummaryWB = Workbooks.Open(vrtSelectedItem)
Next
End With
If SummaryWB Is Nothing then Exit Sub
Si recuerdo correctamente, la referencia Microsoft Scripting Runtime
debe estar habilitada. Además, su sitio puede usar barras diagonales inversas, mina usa barras diagonales.
Puede usar mi enfoque para asignar la carpeta de SharePoint como unidades de red. Entonces puedes continuar como lo hiciste hasta ahora.
Excel VBA Up / Download desde múltiples carpetas de SharePoint
Luego también puede navegar por los archivos con Dir
o File System Object
Tenga en cuenta que hay un error tipográfico en su código inicial
MyNewPathString = ParseResource(myFileDialogStringVariable)
debe ser reemplazado con
MyNewPathString = Parse_Resource(myFileDialogStringVariable)
El guión bajo faltaba.