Buscar por encabezados

HOLA BUENOS DÍAS
TENGO ESTE CÓDIGO QUE ME COPIA LAS COLUMNAS DE UNA HOJA QUE SE LLAMA
"temsap" y las copia a una hoja excel que se llama "tablasap"
pero el problema recae cuanco me canbian el orden de las columnas
,como podría hacer un código para que de la hoja "temsap"
lea los encabezados que yo quiero y cuando sea el encabezado requerido ,
copie la columna completa en la hoja "tablasap"
espero que puedan ayudarme
---------------------------------------------
este es el código que tengo ahora
como puedo cambiarlo
-------------------------------------
Sub vincular_tablas()
Dim Fila As Long
Dim Col As Long
Dim X As String
'Application.Visible = False
On Error GoTo controlerror
'Crear nuevo archivo
Workbooks.Add
ChDir "F:\"
ActiveWorkbook.SaveAs Filename:="F:\FOX\tablaSAP.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
'Abrir tabla SAP
Workbooks.Open "F:\LB\Vanesa Gonzalez\Excel\tempSAP.xlsx"
'Coger columnas que nos interesan de la tabla SAP
Workbooks("tempSAP.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("D:D").Select
Selection.Copy
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("A:A").Select
ActiveSheet.Paste
Workbooks("tempSAP.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("G:G").Select
Selection.Copy
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("B:B").Select
ActiveSheet.Paste
Workbooks("tempSAP.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("I:I").Select
Selection.Copy
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("C:C").Select
ActiveSheet.Paste
'Elimino filas no válidas(en blanco, vibs, XXXproveedor(obsoletos), num de mat no validos
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1).EntireRow.Delete
For Fila = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
X = Left(Cells(Fila, 6), 3)
If WorksheetFunction.CountA(ActiveSheet.Rows(Fila)) = 0 Or X = "XXX" Or Cells(Fila, 1) = "Material" Or Cells(Fila, 1) < 300000000 Or Cells(Fila, 2) = "PedOfer" Or Cells(Fila, 3) = "FERT" Or Cells(Fila, 3) = "DOKU" Or (Cells(Fila, 3) = "HALB" And Cells(Fila, 10) = "E") Or Cells(Fila, 4) = "ZZZZ" Then
Cells(Fila, 1).EntireRow.Delete
End If
Next Fila
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1) = "MATERIAL"
Cells(1, 2) = "DESCRIPCIÓN"
Cells(1, 3) = "TpMt"
'Application.Visible = True
Exit Sub
controlerror:
Select Case Err.Number
Case 1004
MsgBox "Cerrar tablaSAP antes de ejecutar"
End Select
End Sub

1 Respuesta

Respuesta
1

Te anexo código para buscar por encabezado...

Sub buscar_encabezado()
 Sheets("tempsap").Select
 Rows(1).Find("TU ENCABEZADO").Offset(1).Select
 Range(Selection, Selection.End(xlDown)).Copy Hoja7.Range("A1")
End Sub

Comentame que tal te fue...

hola muchas gracias por tu respuesta ,podrías ayudarme a acoplar estas lineas de código que me mandaste a mi código,es que e intentado yo ,y no ahy forma
nota:mi código busca columnas determinadas de el archivo .temsapxls y las copia en otro archivo llamado tablasap.xls ,el problema recae cuando me cambian
el orden de las columnas, es por eso que necesitaba un código(el tuyo XD) para que mi programa aga lo que viene asiendo pero
esta vez en la parte inicial donde tiene que copiar las columnas ,ya no sea por que tiene asignada las columnas determinadas sino que solo copie las
columnas que tengan los encabezados elegidos
muchas gracias por tu ayuda y por tu rápida respuesta,espero también puedas ayudarme en esto

Tu código quedaría asi:

Sub vincular_tablas()
Dim Fila As Long
Dim Col As Long
Dim X As String
'Application.Visible = False
On Error GoTo controlerror
'Crear nuevo archivo
Workbooks.Add
ChDir "F:\"
ActiveWorkbook.SaveAs Filename:="F:\FOX\tablaSAP.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
'Abrir tabla SAP
Workbooks.Open "F:\LB\Vanesa Gonzalez\Excel\tempSAP.xlsx"
'Coger columnas que nos interesan de la tabla SAP
'****Esta parte la repites cuantas veces sea necesario para las columnas que necesitas ****
Workbooks("tempSAP.xlsx").Worksheets("Hoja1").Activate
Rows(1).Find("TU ENCABEZADO").Offset(1).Select
Range(Selection, Selection.End(xlDown)).Copy
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Range("A1").Paste
'**********************************
'Elimino filas no válidas(en blanco, vibs, XXXproveedor(obsoletos), num de mat no validos
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1).EntireRow.Delete
For Fila = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
X = Left(Cells(Fila, 6), 3)
If WorksheetFunction.CountA(ActiveSheet.Rows(Fila)) = 0 Or X = "XXX" Or Cells(Fila, 1) = "Material" Or Cells(Fila, 1) < 300000000 Or Cells(Fila, 2) = "PedOfer" Or Cells(Fila, 3) = "FERT" Or Cells(Fila, 3) = "DOKU" Or (Cells(Fila, 3) = "HALB" And Cells(Fila, 10) = "E") Or Cells(Fila, 4) = "ZZZZ" Then
Cells(Fila, 1).EntireRow.Delete
End If
Next Fila
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1) = "MATERIAL"
Cells(1, 2) = "DESCRIPCIÓN"
Cells(1, 3) = "TpMt"
'Application.Visible = True
Exit Sub
controlerror:
Select Case Err.Number
Case 1004
MsgBox "Cerrar tablaSAP antes de ejecutar"
End Select
End Sub

hola

lo intente pero no se ejecuta bien mi macro

te puedo mandar la macro y el archivo tempsap para que lo ejecutes tu y veas el error yo ya llevo mirándolo unas horas y no se que pasa

pd:mi correo es [email protected]

un saludo

muchas gracias

Ok, mandame tu ejemplo.. mi correo es [email protected]

hola te mande el mail con el ejemplo ,pudiste mirarlo XD

espero que me puedas ayudar , yo aun soy muy inexperto en esto de programar

muchas gracias

hola

que tal el fin de semana XD

al final pudiste mirar mi macro?

es que estoy intentándolo y aun no consigo nada XC

Listo te eh enviado unos comentarios a tu correo.

Saludos y disculpa la tardanza pero tenia cosas pendientes

Listo ya adapte todo tu código, era tan sencillo, no se porque decías que no funciona, si lo probé muchas veces, los expertos no estamos obligados a realizar el trabajo completo...

Saludos.

'Coger columnas que nos interesan de la tabla SAP
'encabezado--> material
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("Material"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("A:A").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> Texto breve de material
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("Texto breve de material"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("B:B").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> TpMt
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("TpMt"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("C:C").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> Producto
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("Producto"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("C:C").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> vendor
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("vendor"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("E:E").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado-->Name1
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("Name1"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("F:F").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> Producto
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("Producto"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("G:G").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> cantidad
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("cantidad"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("H:H").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> UMB
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("UMB"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("I:I").Select 'columna donde se pegara la informacion
ActiveSheet. Paste
'encabezado--> C
Workbooks("tempSAP.xls").Worksheets("tempSAP").Activate
Rows(2). Find("C"). EntireColumn. Copy 'en las comillas va el nombre de la columna/encabezado a buscar
Workbooks("tablaSAP.xlsx").Worksheets("Hoja1").Activate
Columns("J:J").Select 'columna donde se pegara la informacion
ActiveSheet. Paste

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas