Saltar al contenido

Como abrir un archivo .xlsm desde cualquier pc


Recommended Posts

Ya se que se ha preguntado un monton de veces, pero no se si es por la version (Excel 2010) o que es lo que pasa, pero no se como poner el codigo para que una macro me abra un archivo de excel que estan alojados en la misma carpeta.

La macro se en cuentra en el libro personal, no en la misma carpeta del archivo que quiero abrir ni del que estoy ejecutando la macro.

Con esto no me sirve ya que me da error 1004

Workbooks.Open ThisWorkbook.Path & "\" & "TARIFADATA.xls"[/CODE]

¿Alguna sugerencia?. Gracias de antemano.

Enlace a comentario
Compartir con otras webs

.

ThisWorkbook es el libro que contiene la macro que se está ejecutando, que en este caso está en el libro personal.

Hemos de referirnos al libro activo.

Workbooks.Open[B] ActiveWorkbook[/B].Path & "\" & "TARIFADATA.xlsm"[/CODE]

Enlace a comentario
Compartir con otras webs

Hola Macro Antonio (buen juego de palabras en el nick).

La macro que se está ejecutando está en el archivo "personal.xlsb". El archivo en el que se aplica la macro es un .xls y debe realizar una llamada a TARIFADATA.xlsm para realizar un volcado de datos de este archivo con macro. Lo tengo todo ok, menos el poder llamarlo desde el archivo .xls. Este archivo .xls se ejecuta desde la misma carpeta pero tengo que ejecutarlo a veces en distintos ordenadores.

Hasta ahora lo hacia excribiendo toda la ruta

Workbooks.Open ("\Documents and Settings\My Documents\Datos\CLIENTES\TARIFADATA.xlsm")[/CODE]

, pero como tengo que utilizarlo en varios ordenadores no veo como abrirlo.

No se si te doy mas pistas con esto o lo lio mas. ;-)

Enlace a comentario
Compartir con otras webs

Esa opcion ya la he barajado. ¿Pero como me ahorro el llamar a TARIFADATA.xlsm sin tener que escribir toda la ruta?.

No solo tendría que copiar la macro a cada ordenador, tambien tendria que modificar todas las lineas de la macro que hacen referencia al usuario de cada uno de los ordenadores donde lo copiase. Me explico.

ORDENADOR 1

Workbooks.Open ("\Documents and Settings\usuario01\My Documents\Datos\TARIFADATA.xlsm")

ORDENADOR 2

Workbooks.Open ("\Documents and Settings\usuario11\My Documents\Datos\TARIFADATA.xlsm")

ORDENADOR 3

Workbooks.Open ("\Documents and Settings\usuario18\My Documents\Datos\TARIFADATA.xlsm")

ETC, ETC.

Como ves, sería un autentico lastre trabajar con una macro así ya que hay varias llamadas a TARIFADATA.xlsm durante el proceso de la Macro y modificar cada una las lineas en cada uno de los ordenadores sería emplear muuuuucho tiempo.

:untroubled::untroubled:

Enlace a comentario
Compartir con otras webs

Hola Macro Antonio

Tu insistencia me ha provocado que pruebe opciones :-) y lo que me ha funcionado, aunque no era exactamente lo que buscaba, es lo siguiente.

Workbooks.Open ThisWorkbook.Path & "\" & "TARIFADATA.xlsm"[/CODE]

Para que me haya funcionado he tenido que copiar TARIFADATA en el carpeta de macros personal. No se porque razón ActiveWorkbook no va a la direccion de la carpeta del libro que está activo, si el libro desde el que se llama a TARIFADATA.xlsm están en la misma carpeta.

Me parece que Excel toma como libro activo la macro (que esta en la carpeta de macros personal.xlsb) y no el archivo .xls que está activo en ese momento y del cual llamo a TARIFADATA.

¿Es posible que ActiveWorkbook solo trabaje con libros con Macros y no con libros.xls?

Enlace a comentario
Compartir con otras webs

Me cuesta creer lo que me cuentas.

Por la tarde lo pruebo y te comento.

ya ya!! a mi tambien me resulta muy extraño. Pero he probado de muchas maneras y ActiveWorkbooks no encuentra a TARIFADATA.xls

Te indico el proceso

Abro un libro llamado datosclienteabril2013.xls que esta en la carpeta DOCUMENT\SETTINGS\USUARIOS01\CLIENTES

Sin cambiar nada, ni de hoja, ni de ventana, voy a Vista>ejecutar macros> y activo una macro que se encuentra en el archivo personal de macros. una de las lineas de esta macro hace llamada a TARIFADATA.xlsm, que tambien está en la carpeta DOCUMENT\SETTINGS\USUARIOS01\CLIENTES (antes lo hacia con Chdir, pero como ahora necesito ejecutarlo desde varios ordenadores obviamente ya no vale).

Si utilizo Activeworkbooks me sale error 1004 y define el error que no encuentra el archivo "C:\TARIFADATA.XLS" , lo busca en raiz C: en vez de usar la direccion del libro activo, que se supone que es datosclienteabril2013.xls.

ya te digo, o estoy pasando algo por alto o estoy de Lunes o no logro ver donde fallo.

: Desesperanza:: Desesperanza:

Enlace a comentario
Compartir con otras webs

Las pruebas que hago no me confirman lo que me cuentas.

Añade esta macro en tu Personal.xlsb

Abre cualquier libro y ejecuta la macro a ver que te dice.



Sub Directorios()
MsgBox _
"ThisWorkbook.Path-Directorio de Personal.xlsb: " & _
ThisWorkbook.Path & Chr(10) & Chr(10) & _
"ActiveWorkbook.Path-Directorio de libro que ha ejecutado esta macro: " & _
ActiveWorkbook.Path
End Sub



[/CODE]

Enlace a comentario
Compartir con otras webs

Hola Macro Antonio

En primer lugar gracias por la ayuda desinteresada. He probado tu Macro y el Mensaje en el box sale como debe salir pues es lo correcto. Esto demuestra que efectivamente ACTIVEWORKBOOK sirve para cualquier extension de archivo.

El problema ya lo he localizado, es que Windows8 no maneja igual los archivos temporales o algo asi debe ser, porque en donde creo las macros (windows xp) funciona todo perfectamente pero cuando lo llevo a Windows8 empiezan los problemas.

Gracias por tu ayuda, eres una MACHINE ;-)

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • He cambiado mi macro a este: Sub repetir() Set a = Sheets(ActiveSheet.Name) uf = a.Range("C" & Rows.Count).End(xlUp).Row 'ultima fila con datos ActiveCell.Select ActiveCell.Offset(1, 0).Select   'Application.OnTime Now + TimeValue("00:00:10"), "repetir", , True End If End Sub   Lo que no se es como detenerlo al llegar a la ultima fila con datos de la columna C. Muchas gracias
    • Buenas tardes a todos. Tengo un problema que preciso de vuestra ayuda.  Tengo que controlar los gastos de la oficina que trabajo y he de repartir unos gastos a % según una OT y unos tipos de gastos. Envío un archivo adjunto. Lo que necesito es que lo que aparece en la columna en amarillo lo haga automáticamente, teniendo en cuenta los datos de la tabla a la derecha. Por ejemplo, el primer gasto tiene una cuota de 1477 euros y teniendo en cuenta que es un gasto de tipo Común y que la OT es la 12810234, le corresponde un gasto de 605,57 euros ya que según la tabla de la derecha su % a imputar es de un 41%. ¿alguien me puede ayudar con la formula? He de añadir muchas más líneas y más hojas con el resto de OT y en el futuro cambiar más datos, así que necesito automatizarlo con una formula Excel. Gracias. Control de gastos.xlsx
    • Hola buenas tardes: Por favor me pueden ayudar a realizar lo siguiente. ejecutar una macro después de un tiempo, que recorra una columna a partir de la celda activa hacia abajo. Es una lista extensa, que filtro desde la columna B. y solo me muestra las filas que me interesan. ejemplo: Si mi celda activa es la C23 ejecutar la macro y baje una celda y repite la macro después de 20 segundos y lo vuelve hacer(Simpre bajando una celda), y que este se detenga hasta la ultima fila que este visible en el filtro. Ya que puedo tener muchos datos mas.   Gracias   Prueba filtro y avance.xlsm
    • Muchísimas gracias @Victor7 es realmente increíble. Ahora toca aprender un poco sobre como esta montada esta formula,  pero me ha encantado. Es justo lo que necesitaba. Solo he notado algún fallo cuando los datos no están bien introducidos, por ejemplo hay registro en el punto de control 2 y no en el tres, pero eso en teoría no debería pasar, pero ya sabes como es esto jajaj.  Muchas gracias de verdad. Un saludo
    • Hola, Si lo he entendido bien, te adjunto archivo que creo puede cumplir tus expectativas. En la nueva hoja 'DVU(b)' están los resultados.  Tiene 3 fórmulas: La primera está en A1, que repetirá los títulos de la hoja 'DATAGlobal'.  A medida que se vayan actualizando en esta última hoja, también irán apareciendo automáticamente en la hoja de resultados. Ahora mismo he puesto como rango A1:CB1, pero puede incrementarse de ser necesario. La 2ª fórmula es la de A2:  devuelve las 'Unidades' únicas de la hoja principal.  A este respecto, he colocado como rango de análisis A2:A1900; si prevés que pudiere haber más registros, puedes ampliarlo sin problemas a A2:A19000, o incluso A2:A190000, o más. Y la 3ª fórmula está en B2:  aquí se recogen las cantidades de la columna B que constan en la última aparición de la 'unidad' que se trate, que es la que figura en la celda de la izquierda.  Con la última aparición, me vengo a referir, por ejemplo, que en la fila 4, que recoge la unidad ZCRLA63832, el primer resultado (12,5) lo ha obtenido de B39 y no de A4.  Si no son los mismos, los resultados no serán los esperados.  Y el siguiente resultado (100) es C39.  Esta fórmula también evalúa ahora mismo el rango 2:1900; habrá que ampliarlo dejándolo igual que en la 2ª fórmula, si es el caso. Esta 3ª fórmula, de B2, la puedes copiar horizontalmente hasta donde quieras; siempre devolverá una matriz dinámica con los resultados esperados. Espero haber explicado bien el funcionamiento de la hoja. Saludos, Progreso Unidades (C).xlsx
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.