Ruta que cambia dependiendo del usuario que abra el Excel

Resulta que tengo un excel para buscar cierta información y tengo 2 problemillas.

Problema 1 : Hay 3 texbox situados en la primera hoja del excel llamada "buscador". Cuando otra persona que no sea yo abre el excel desde su ordenador los texbox salen pero no se puede hacer click ni escribir. ¿Qué puede ser?

Probloma 2 : El excel es usado por varios usuarios y cada usuario tiene una ruta diferente, eso hace que las macros las tenga que editar 1 a 1 para adaptarlas a las rutas que cada uno tiene. ¿Hay alguna manera para que automaticamente sepa que ruta tiene ese excel? Me explico, tengo macros que trabajan en la unidad H: pero hay compañeros que la ruta de mi unidad en su ordanador no es la H: si no la Z: o la T:. ¿Hay algun modo para que la macro detecte automaticamente en que unidad esta? Me gustaria estar editando linea a linea cada vez que le he de dar acceso a alguien al excel

2 respuestas

Respuesta
1

Por el problema de las rutas, cuando lo van a trabajar en equipos diferentes lo ideal es los otros archivos a utilizar se encuentren en la misma carpeta que el libro o en una subcarpeta.

De ese modo, la ruta puede ser:

ruta=Thisworkbook.path

O para una subcarpeta, 

ruta=Thisworkbook.path\Copias

Es posible que necesites agregar la barra al final antes de mover o llamar a un archivo.

no me encuentra la ruta.

La ruta que tengo actual es esta

ruta2 = "H:\DIGITALITZACIONES\Expedientes tramitados"

y la modifico de esta manera:
ruta2 = ThisWorkbook.Path & "\" & "Expedientes tramitados"

Tambien la he provado de este modo:

ruta2 =ThisWorkbook.Path\Expedientes tramitados

Quizás te estés olvidando de mi comentario: lo ideal es los otros archivos a utilizar se encuentren en la misma carpeta que el libro o en una subcarpeta.

Es decir que si tu libro con la macro se encuentra en la carpeta DIGITALITZACIONES (cada usuario puede tenerla en otro directorio pero siempre dentro de una carpeta llamada DIGITALITZACIONES), el resto de los archivos puede estar allí mismo en una subcarpeta llamada Expedientes tramitados.

Entonces la ruta para acceder a los otros archivos guardados allí sería:

ruta2 = ThisWorkbook.Path & "\Expedientes tramitados\"

Colocando la barra final, te ayuda al momento de llamar algún archivo, por ej: Tramite1.xlsm, sería:

milibro= ruta2 & "Tramite1.xlsm"

Si en cambio, todos los archivos estarán en el mismo directorio DIGITALIZACIONES, tu libro con la macro más los otros archivos, la instrucción quedaría así:

ruta2 = ThisWorkbook.Path & "\"

milibro= ruta2 & "Tramite1.xlsm"

Otra opción que también es válida, es sin la última comilla pero luego hay que recordar de agregarla antes del nombre del libro:

ruta2 = ThisWorkbook.Path & "\Expedientes tramitados"

milibro= ruta2 & "\" & "Tramite1.xlsm"     'o lo que es lo mismo:

milibro= ruta2 & "\Tramite1.xlsm" 

Te recuerdo que en este foro debes valorar las respuestas (con Excelente o buena). Sino comenta y lo seguimos tratando.

Sdos!

Perdona he estado de viaje y lo he podido dedicarle mucho tiempo. Lo poco que he intentado no me ha funcionado pero intentare encontrar la solución. Parce que no me encuentra las rutas... alguna cosa he de estar haciendo mal

Creo que debieras leer con más atención todas mis notas en negrita del día 14 porque esas son las instrucciones correctas. Seguramente te estás olvidando una barra.

Y luego debieras modificar la valoración de acuerdo a la respuesta recibida.

Sdos!

Si como te he dicho le he dedicado un poco más de tiempo y tenias razón, me olvidaba una \. 

Muchas gracias por tu ayuda. Me has solucionado un problemón jajaja

Respuesta
1

[Hola

Sobre tu primer problema, no has dado los suficientes datos como para poder ayudarte.

Sobre el segundo problema, dado que las computadoras tienen más de una unidad (entradas usb, CD/DVD, discos duros, discos de red, etc.), pues no, dada la gran variación en los casos que comentas, la única forma es que cada usuario necesariamente elija la ruta. Lo otro es que hayas obviado algún detalle ¿o no?

Abraham Valencia

Del primer apartado no se que más puedo decir. Los texbox que en mi pc los puedo editar y ver el código en otro pc no me da la opción y me salen deshabilitados (no me deja ni borrar ni escribir) pero si lo abro desde mi pc si (es el mismo archivo).

A la segunda parte de mi pregunta puede que me olvide decir que todos los pc son iguales, lo único que cambia son las letras de las unidades locales (dependiendo de tu faena te dan de alta a unas u a otras). Todo esta colgado en la unidad de red y las rutas que uso son las mismas donde esta guardado el documento excel, lo único que cambia la letra de la ruta.

Vamos a poner que el excel se llama datos y esta guardado en la unidad H: dentro de una carpeta que pone archivos H:\arxivos\datos.xslm

Las rutas que uso son a partir de esta. Ejemplo: H:\arxivos\carpeta\registros.pdf

Para todo el mundo todo es igual pero cuando acceden a la unidad de red no van la H: si no a la Z: (es lo mismo pero solo cambia la letra ya que la H: deberá tener otra cosa diferente que yo)

Cuando un compañero abre el documento donde yo lo he guardo a el la ruta le sale así. Ejemplo: Z:\arxivos\datos.xslm (aunque sea una letra diferente es la misma unidad que yo tengo).

No se si con esta información va a ayudar obtener una respuesta je je. Lo que necesitaría es que el excel siempre tuviera encuenta en que unidad que se le ha abierto

Entonces ¿en tu caso es "H" y en todos los demás - sin excepción - es "Z"?

Abraham Valencia

Eso depende de los informáticos de la configuración que hagan en cada ordenador. De momento tengo contralados 3 alternativas pero podría ser más

Pues si no depende de ti, solo te queda tener fe de que cada usuario elegirá la carpeta adecuada:

Sub Prueba()
Dim Carpeta As String
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Elegir carpeta"
    .ButtonName = "Aceptar"
    .InitialFileName = "C:\"
    .AllowMultiSelect = False
    If .Show = -1 Then
        Carpeta = .SelectedItems(1)
        MsgBox "La carpeta elegida es: " & Carpeta
    Else
        MsgBox "Cancelaste"
    End If
End With
End Sub

La variables "Carpeta" es la que almacena la ruta.

Abraham Valencia

Más que nada es que las rutas no les funcionan y se las tengo que cambiar manualmente a todos, y me gustaría poder evitar eso. A ver si con ThisWorkbook.Path & "\" me funciona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas