Código VBA con su Excel en OneDrive
Resuelto
xavier62000
Mensajes publicados
106
Fecha de registro
Estado
Miembro
Última intervención
-
xavier62000 Mensajes publicados 106 Fecha de registro Estado Miembro Última intervención -
xavier62000 Mensajes publicados 106 Fecha de registro Estado Miembro Última intervención -
Bonjour à tous,
Tengo 26 archivos idénticos que llamo de la A a la Z y otro 99. Los archivos de la A a la Z están compartidos con diferentes usuarios (26) en Onedrive y contienen código VBA que funciona.
La manipulación para los archivos de la A a la Z es que el usuario selecciona el archivo a abrir en Onedrive
Clic derecho
Abrir con su Excel
Modifica los datos y los valida
He probado y funciona
Para el archivo 99, este tiene como objetivo transferir una hoja de cálculo de los archivos de la A a la Z hacia el archivo 99. Los archivos de la A a la Z están todos cerrados y se encuentran en el mismo directorio, incluido el archivo 99, es decir, Onedrive/nombre_de_directorio
El código VBA existente en el archivo 99 funciona en local. La apertura con su Excel en Onedrive funciona, sin embargo, el VBA falla
A continuación, el código para transferir mis datos, en negrita/itálico/subrayado el punto de falla
Gracias por su ayuda
Tengo 26 archivos idénticos que llamo de la A a la Z y otro 99. Los archivos de la A a la Z están compartidos con diferentes usuarios (26) en Onedrive y contienen código VBA que funciona.
La manipulación para los archivos de la A a la Z es que el usuario selecciona el archivo a abrir en Onedrive
Clic derecho
Abrir con su Excel
Modifica los datos y los valida
He probado y funciona
Para el archivo 99, este tiene como objetivo transferir una hoja de cálculo de los archivos de la A a la Z hacia el archivo 99. Los archivos de la A a la Z están todos cerrados y se encuentran en el mismo directorio, incluido el archivo 99, es decir, Onedrive/nombre_de_directorio
El código VBA existente en el archivo 99 funciona en local. La apertura con su Excel en Onedrive funciona, sin embargo, el VBA falla
A continuación, el código para transferir mis datos, en negrita/itálico/subrayado el punto de falla
Gracias por su ayuda
Sub IMPORTACION()
' Procedimiento que permite la consolidación de varios libros
'
Dim wbk As Workbook
Dim wshScr As Worksheet
Dim wshDst As Worksheet
Dim celDst As Range
Dim rng As Range
Dim camino As String
Dim nombreLibro As String
Dim derLinea As Long
'Sheets("TRANS_CONSO").Select
Sheets("TRANS_CONSO").Activate
Range("B3:AK10000").ClearContents
' Detener la actualización de la pantalla
Application.ScreenUpdating = False
' Definición de la hoja de destino
Set wshDst = ThisWorkbook.Worksheets("TRANS_CONSO")
' Reinicio del archivo de síntesis de los rankings
With wshDst
' Definición de la celda de destino de los datos
Set celDst = .Range("B3")
End With
' Paso n° 2: Recorrer todos los archivos del directorio actual
camino = ThisWorkbook.Path & "\"
' Nombre del primer libro en el directorio
nombreLibro = Dir(camino & "*.xlsm")
' Bucle para abrir los libros del directorio
Do While Len(nombreLibro) > 0
If nombreLibro <> ThisWorkbook.Name Then ' excepto este libro de consolidación
' Apertura del libro
Set wbk = Workbooks.Open(camino & nombreLibro, False)
' Definición de la hoja de cálculo JUGADORES
On Error Resume Next
Set wshScr = wbk.Worksheets("TRANSFERT")
On Error GoTo 0
' Comprobación de la existencia de la hoja
If Not wshScr Is Nothing Then
With wshScr
' Número de la última línea de datos
derLinea = .Cells(.Rows.Count, "B").End(xlUp).Row
' Sustitución de las fórmulas por sus valores (para romper los enlaces)
.UsedRange.Value = .UsedRange.Value
' Copia de todos los datos
.Range("B3:AK" & derLinea).Copy celDst
End With
' Definición de la próxima celda de destino de los datos
Set celDst = celDst.Offset(derLinea - 2)
End If
' Cierre del libro de datos sin modificarlo
wbk.Close False
End If
' Nombre del próximo libro
nombreLibro = Dir
Loop
'clasificación según club +nombre apellido
ActiveWorkbook.Worksheets("TRANS_CONSO").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("TRANS_CONSO").Sort.SortFields.Add Key:=Range( _
"D3:D10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("TRANS_CONSO").Sort.SortFields.Add Key:=Range( _
"F3:F10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("TRANS_CONSO").Sort
.SetRange Range("B3:AK10000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Mensaje
Call TRANSFERT
MsgBox " Importación y transferencia sin duplicados finalizadas "
End Sub
5 respuestas
-
Hola,
OneDrive en la nube no es un lector local o en red.
¿Qué te da ThisWorkbook.Path por curiosidad?
Asegúrate de tener los archivos A-Z en el directorio de OneDrive de tu PC y trabaja en ese directorio.
Asegurándote de que la sincronización se realice correctamente, suele ser un lío con el cloud de MS.
Eric
--
Al intentarlo continuamente, al final se logra.
Por lo tanto, cuanto más falla, más posibilidades hay de que funcione. (los Shadoks)
Además de dar las gracias (¡sí, sí, eso se hace!), piensa en marcarlo como resuelto. Gracias. -
Hola,
Sí, eso es lo que hice, los archivos de la A a la Z están en el directorio de OneDrive de mi PC. Para mí no hay problema.
Pero también quiero que algunos usuarios puedan usar el archivo 99. ¿Hay otra solución para satisfacer mi necesidad?
Para tu curiosidad:
Desde mi PC: ThisWorkbook.Path te da c:\users\mi nombre\onedrive\mi directorio
Pero desde OneDrive, efectivamente, es una ruta de acceso que no significa nada
Atentamente -
El error no ocurre cuando estamos en el directorio de Onedrive;
El error ocurre cuando hemos iniciado Onedrive,
hemos seleccionado el archivo 99, clic derecho, abrir con SU excel
y luego iniciamos el procedimiento
Código de error de ejecución 52
Nombre o número de archivo incorrecto-
Pero ahora lo abres desde la nube, si entiendo bien.
No puedes usar la versión de OneLine, no puede funcionar así. Tu ruta será algo como https://onedrive.net/xxxx y Excel no tiene los permisos para acceder así.
Aún más para hacer un Dir que es un comando DOS.
Todo debe abrirse desde c:\usuarios\mi nombre\onedrive\mi carpeta
Bueno, así era. Ahora con Office 365 y 2016 que ha mejorado el trabajo colaborativo, puede que haya cambios y nuevas posibilidades. Pero en este caso, no está bien por tu parte.
-
-
OK. Entonces para concluir, es imposible que los otros usuarios puedan utilizar el archivo 99 al activar la importación de datos desde OneDrive.
¡La única solución es abrirlo desde mi usuario!
Por casualidad, ¿conoces otra solución (no importa, estoy abierto a todo)?
¡No estoy a eso cerca!
Gracias, Eric.-
o que pongan todos los archivos en su PC en un directorio de OneDrive sincronizado, y que trabajen con los archivos del PC.
Como tú.
Si no están conectados de forma permanente (por ejemplo, los que están en itinerancia), por seguridad deberías hacer copias de seguridad con fecha regular de tu directorio.
Supongo que Microsoft lo ha hecho bien, pero bueno... En caso de problema estarás feliz de encontrar una copia no demasiado antigua con un mínimo de actualizaciones que hacer.
-
-
Gracias por la información.