Ayuda con una macro

Yo trabajo con 3 tipos de archivos:
1.- Archivo bajado de aplicativo en formato excel sin formato
2.- Archivo en el cual pego cierto tipo de información del primer archivo
3.- Desde el archivo 2 hago importación de datos con vlookup (buscarv) para ingresar valores al archivo 2
Mi pregunta va de la siguiente manera:
1.- Como puedo hacer mediante una macro que el primer archivo quede formateado con tipo de letra, tamaño de letra ancho de columna.
2.- Mediante una ventana yo especificar el numero de columna y que se copie al archivo 2 lo que yo requiero.
3.- Mediante una macro realizar la importación de dirección sin necesidad de estar realizando todos los días la función vlookup (buscarv)

1 respuesta

Respuesta
1
Paso a contestar tus preguntas de acuerdo con lo que entendí:
1. Te recomiendo que utilices la herramienta de grabar macros para dar formato a la hoja de cálculo, esta es la manera más sencilla. Sobre el archivo original comienzas a grabar y luego vas dando formato al archivo con las características de fuente, ancho de línea, colores, etc. que deseas que tengan todos, cuando termines paras la grabación y listo. Luego, al ejecutar esta macro sobre otro archivo quedaría igual al que formateaste originalmente. Es importante que cuando comiences a grabar la macro, en la opción que te pregunta dónde la vas a guardar, indiques que lo haga en el libro de macros personal.xls, así podrás tener acceso a la macro desde cualquier archivo.
2. Pienso que puedes usar una macro del tipo, en esta la idea es que no ingreses el número de columna sino la letra (me parece más fácil), debes reemplazar en el código que te envío el nombre del archivo de destino, así como la celda o columna de destino:
Sub copiacolumna()
    x = InputBox("Ingrese el nombre de la columna (Ej. C)")
   Columns(x & ":" & x).Select
   Selection.Copy
   Windows("ArchivoNumero2.xls").Activate
   Range("V1").Select
   ActiveSheet.Paste
   Application.CutCopyMode = False
End Sub

La tercera parte la verdad no entendí, pero si quieres explicarme nuevamente revisamos esa también.
Perfecto no hace falta la parte 3 gracias por tu ayuda, pero tengo una duda con la macro, en donde se especifica el nombre del archivo destino es posible poner la dirección donde se encuentra el archivo de destino ya que este archivo se encuentra en una ubicación de red.
Saludos
Ok. En ese caso, si el archivo no lo tienes abierto, debes abrirlo primero. Debes reemplazar la línea:
Windows("ArchivoNumero2.xls").Activate
Por:
ruta = "C:\Info\Archivos\archivo1.xls"
Workbooks.Open Filename:=ruta

En la variable ruta, debes poner entre comillas, la ruta completa donde se encuentra el archivo, incluyendo el nombre de éste.
Muchas gracias por tu aclaración pero el rato que corro la macro me sale el siguiente error:
Select method of Range class failed
Tu código quedó así:
Sub copiacolumna()
  x = InputBox("Ingrese el nombre de la columna (Ej. C)")
  Columns(x & ":" & x).Select
  Selection.Copy
  ruta = "C:\Info\Archivos\archivo1.xls"
  Workbooks.Open Filename:=ruta
  Range("V1").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
End Sub
¿Y reemplazaste la variable ruta para que tome la dirección de tu archivo?
Te cuento que acabo de probarlo y me funciona bien.
Hola:
Nuevamente gracias por tu ayuda pero si mi código esta igual al tuyo pero ahora en vez de salirme el erro de antes me sale una ventana de Visual Basic con un numero 400.
Te pongo mi código para que lo revises, ¿una pregunta este error no tiene que ver con la seguridad de macros?
Sub copiacolumna()
x = InputBox("Ingrese el nombre de la columna (Ej. C)")
Columns(x & ":" & x).Select
Selection.Copy
ruta = "C:\Prueba.xls"
Workbooks.Open Filename:=ruta
Range("V1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
El código está correcto.
¿A qué te refieres con seguridad de macros? Debes tener habilitadas las macros en el archivo para poder ejecutarla. Pero si puedes editar la macro y ejecutarla entonces no creo que ese sea el error.
¿Cuándo te sale el error (después de indicar la letra de la columna o no alcanzas a llegar allí siquiera)?
Hola:
Sabes el error justo aparece después de indicar la columna.
Una alternativa que se me ocurre para validar es que me envíes el archivo a mi correo y pruebo si me funciona aquí.
Si lo hace entonces puede ser un problema con tu versión de excel, entonces pasaríamos a resolverlo con alguna modificación en el mismo, si no funciona entonces hay algún problema con el código actual.
Listo yo te envío en el transcurso de la tarde
Hola sabes ya funciono:
Pero tengo dos preguntas más:
1.- Como puedo hacer para yo especificar a que columna y fila puedo copiar
2.- Como hago para que no me copie la primera fila ya que la primera fila contiene encabezados yo necesito por ejemplo desde la celda A2 hasta la A10 y así con todas las demás columnas pero la fila 1 no quiero que sea copiada.
Saludos.
En ese caso tendrías que especificar el rango a copiar en el dialogbox:
Sub copiacolumna()
  x = InputBox("Ingrese el rango a copiar (Ej. A2:A100)")
  Range(x).Select
  Selection.Copy
  ruta = "C:\Info\Archivos\archivo1.xls"
  Workbooks.Open Filename:=ruta
  Range("V1").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
End Sub
Ok eso esta bien pero lo que me refería es que yo pueda especificar desde que celda quiera que copie los datos en el archivo de destino
Ok. Entonces, si el archivo de origen tiene un tamaño fijo, por ejemplo, siempre vas a copiar desde C1 hasta C350, entonces esa parte se puede dejar fija en la primera parte de la macro.
Esto para luego para poder copiar en el archivo de destino a partir de una ubicación específica, para lo cual simplemente reemplazas la dirección en esta línea:
Range("V1").Select
Ok entonces más o menos quedaría así:
Sub copiacolumna()
x = InputBox("Ingrese el rango a copiar (Ej. A2:A100)")
Range(x).Select
Selection.Copy
ruta = "C:\Info\Archivos\archivo1.xls"
Workbooks.Open Filename:=ruta
y = InputBox("Ingrese el rango donde se va copiar (Ej. A2:A100)")
Range(y).Paste
Application.CutCopyMode = False
End Sub
De acuerdo, sólo que en el segundo inputbox sólo necesitas que se ingrese una celda de destino, Ej. A2, no el rango completo.
Tavopz:
Excelente tu ayuda muchas gracias esto me va ayudar mucho en mi trabajo, muchas gracias por tu ayuda cualquier cosa siempre voy acudir a ti.
Saludos,
Juanjo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas