UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo


No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

newbieM


Buenos días, espero se encuentren bien.

Quisiera pedir su apoyo. Necesito lograr una macro que copie las columnas de "Region" e "Ingreso" en una pestaña nueva. Las columnas estan separadas no son contiguas.
He avanzado un poco, pero no se como copiarlas ya que el número de pestañas en el archivo puede variar, así como también el número de registros de la tabla en donde estan las dos columnas que necesito copiar.

Hasta el momento mi macro:
*Borra el renglon 5 de la primera hoja, pues esa hoja tiene un renglon de más comparado con las demás.
*Quita la combinación de celdas de la columna "Region"

Espero puedan ayudarme.
Muchas gracias.
Archivos
Diario_de_Visitas_-_Operacional (1).xlsm
No tienes los permisos para descargar los archivos.
(120 KB)

jhon1904

avatar
Hola Newbiem

Espero te sirva la solución


saludos,
Archivos
Diario_de_Visitas_-_Operacional (1).xlsm
No tienes los permisos para descargar los archivos.
(139 KB)


_________________
Jhon Mayorquin
https://www.facebook.com/groups/1908894496046888/

newbieM


Hola jhon1904.

Una duda, es que cuando corro la macro en un archivo que tiene más pestañas me sale error en esta línea:
Hoja7.Range("A2:c100000").ClearContents

¿Le tengo que cambiar el 7 al número de hojas de cada archivo?
Disculpa pero no soymuy buena en macros.

Gracias!

jhon1904

avatar
Hola,

La hoja7 te indica la hoja donde se esta trabajando  la macro, si cambiaste la macro a otro archivo  tienes dos opciones:

Opción 01:

cambia todo en donde dice Hoja7 por  Sheets("Informe") donde informe es el nombre de la hoja.

Opción 02:

Borra todo lo que diga Hoja7. no se le vaya olvidar borrar el Punto asi no se le generara errores


saludos,


_________________
Jhon Mayorquin
https://www.facebook.com/groups/1908894496046888/

jhon1904

avatar
Hola de nuevo

recuerde que esa macro solo te funciona si todas las hojas tienen el mismo formato al del archivo donde se trabajo.


saludos,


_________________
Jhon Mayorquin
https://www.facebook.com/groups/1908894496046888/

newbieM


Hola Jhon1904,
Antes que nada muchas gracias por toda la ayuda.

He cambiado los registros como me haz indicado pero me sigue saliendo error, cambie todo lo que decía hoja7 por sheets("Informe").

Sub Info()
Dim dato As String
Dim fila2, Buscar
Dim fila As Long, Hoja As Worksheet
fila = 2
Sheets("Informe").Range("A2:c100000").ClearContents       
<----- aquí se detiene la macro

For Each Hoja In ThisWorkbook.Worksheets

  If Hoja.Name <> "Informe" Then
      fila2 = Hoja.Range("C" & Rows.Count).End(xlUp).Row
      Buscar = Application.WorksheetFunction.Match("Región", Hoja.Range("C:C"), 0) + 1
      For I = Buscar To fila2
        If Hoja.Range("o" & I) <> "" Then
            Sheets("Informe")("A" & fila) = Hoja.Name
            Sheets("Informe").Range("B" & fila) = Hoja.Range("C" & I)
            Sheets("Informe").Range("C" & fila) = Hoja.Range("o" & I)
            Sheets("Informe").Range("D" & fila) = Hoja.Range("p" & I)
            fila = fila + 1
        End If
        Next I
        fila = fila + 1
  End If
Next
End Sub


Podrías ayudarme por favor? no sé cual sea el error.

Muchas gracias nuevamente.

newbieM


He creado en el archivo nuevo una hoja que se llame informe y le he puesto la macro de arriba, el archivo nuevo tiene 40 hojas.
El formato es el mismo pero no logra jalar.

newbieM


He intentado de la segunda forma y se para en la misma línea.
No sé que puedo estar haciendo mal.

Sub Info()
Dim dato As String
Dim fila2, Buscar
Dim fila As Long, Hoja As Worksheet
fila = 2
Range("A2:c100000").ClearContents           <----- se detiene macro

For Each Hoja In ThisWorkbook.Worksheets

  If Hoja.Name <> "Informe" Then
      fila2 = Hoja.Range("C" & Rows.Count).End(xlUp).Row
      Buscar = Application.WorksheetFunction.Match("Región", Hoja.Range("C:C"), 0) + 1
      For I = Buscar To fila2
        If Hoja.Range("o" & I) <> "" Then
            Range("A" & fila) = Hoja.Name
            Range("B" & fila) = Hoja.Range("C" & I)
            Range("C" & fila) = Hoja.Range("o" & I)
            Range("D" & fila) = Hoja.Range("p" & I)
            fila = fila + 1
        End If
        Next I
        fila = fila + 1
  End If
Next
End Sub

newbieM


Hola, espero no parecer una loca dejando tanto mensaje pero he comentado ese renglón donde la macro paraba y ya corre el resto.
Solo que se me presenta otro problema, en archivos con más de 100 hojas me sale un error que dice:
"No se puede obtener la propiedad Match de la clase WorksheetFunction"
en esta línea: 
Buscar = Application.WorksheetFunction.Match("Región", Hoja.Range("C:C"), 0) + 1
¿Será por el número de hojas?

Así esta la macro actualmente:

Sub Info()
Dim dato As String
Dim fila2, Buscar
Dim fila As Long, Hoja As Worksheet
fila = 2
'Worksheets("Informe").Range("A2:c100000").ClearContents  <--- renglon comentado

For Each Hoja In ThisWorkbook.Worksheets

  If Hoja.Name <> "Informe" Then
      fila2 = Hoja.Range("C" & Rows.Count).End(xlUp).Row
      Buscar = Application.WorksheetFunction.Match("Región", Hoja.Range("C:C"), 0) + 1
      For I = Buscar To fila2
        If Hoja.Range("o" & I) <> "" Then
            Worksheets("Informe").Range("A" & fila) = Hoja.Name
            Worksheets("Informe").Range("B" & fila) = Hoja.Range("C" & I)
            Worksheets("Informe").Range("C" & fila) = Hoja.Range("o" & I)
            Worksheets("Informe").Range("D" & fila) = Hoja.Range("p" & I)
            Worksheets("Informe").Range("E" & fila) = Hoja.Range("y" & I)
            fila = fila + 1
        End If
        Next I
        fila = fila + 1
  End If
Next
End Sub

jhon1904

avatar
Hola, Newbie

primero que todos tienes que entender para como funciona la macro, te lo explicare para que hagas las modificación en el archivo original:
en el archivo donde se trabajo la macro que necesitabas solo habia una hoja diferente que es la que trae el resultado de la consulta que tu estas buscando y las otras hojas son donde la macro va ir a buscar, cunado se coloca la instrucción:
Código:
If Hoja.Name <> "Informe" Then

 esta condicion indica que no coja la hoja con el nombre de Informe.
todo lo que dice Hoja7.Range, esa es la hoja de informe donde se trabaja.
Código:
Buscar = Application.WorksheetFunction.Match("Región", Hoja.Range("C:C"), 0) + 1

esto indica que va buscando hoja por hoja la palabra Región y si una hoja diferente a la de informe no tiene la palabra región te saldrá error.
te subo un nuevo archivo en un Link de descarga.

saludos,


_________________
Jhon Mayorquin
https://www.facebook.com/groups/1908894496046888/

newbieM


Buen día Jhon,
Disculpa, le he dado click al link que sale en el post pero no abre el archivo.

gracias por la ayuda.

jhon1904

avatar


_________________
Jhon Mayorquin
https://www.facebook.com/groups/1908894496046888/

newbieM


Me parece que el enlace está incompleto, si le doy clic me lleva a mis carpetas de dropbox.
Creo que los enlaces llevan una parte con numeros y letras al azar.
¿Le estás dando en crear vínculo?

Gracias.

jhon1904

avatar
ensaya con este haber

[url=https://www.dropbox.com/s/btb2p2v4050ka37/Diario_de_Visitas_-_Operacional %281%29.xlsm?dl=0]https://www.dropbox.com/s/btb2p2v4050ka37/Diario_de_Visitas_-_Operacional%20%281%29.xlsm?dl=0[/url]


_________________
Jhon Mayorquin
https://www.facebook.com/groups/1908894496046888/

newbieM


Muchas gracias por la ayuda jhon1904 y por la paciencia jeje.
Ya me funcionó en un archivo de 533 pestañas.

Gracias nuevamente cheers

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.