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   -
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


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

  1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    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.
    1
  2. xavier62000 Mensajes publicados 106 Fecha de registro   Estado Miembro Última intervención   3
     
    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
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      La ruta es correcta, sí.
      No entiendo tu error sobre Dir en estas condiciones.
      He probado en mi directorio de onedrive por si acaso, pero no tuve ningún error.
      ¿Cuál es el mensaje?
      ¿Y qué pasa si pones todo en duro? :
      nomClasseur = Dir("c:\users\mi nombre\onedrive\mi directorio\*.xlsm")
      0
  3. xavier62000 Mensajes publicados 106 Fecha de registro   Estado Miembro Última intervención   3
     
    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
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      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.
      0
  4. xavier62000 Mensajes publicados 106 Fecha de registro   Estado Miembro Última intervención   3
     
    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.
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      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.
      0
  5. xavier62000 Mensajes publicados 106 Fecha de registro   Estado Miembro Última intervención   3
     
    Gracias por la información.
    0