Visual Basic para Aplicaciones - mover datos a otra hoja segun condicion

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de daxtrox

mover datos a otra hoja segun condicion

Publicado por daxtrox (4 intervenciones) el 24/10/2021 14:54:53
Estimados, Tengo una macro que me carga los datos de un txt a una hoja de excel, los datos del txt son los siguientes.


1
2
3
4
5
6
7
8
9
10
nombre	     Fecha		         Date
    	A	   22-10-2021 17:46	   1481.348
	    A	   22-10-2021 17:46	   1481.348
	    A	   22-10-2021 17:46	   1481.348
    	B	   22-10-2021 17:46	   1486.493
	    B	   22-10-2021 17:46	   1486.493
	    B	   22-10-2021 17:46	   1486.493
    	C	   22-10-2021 18:01	   1481.346
	    C	   22-10-2021 18:01	   1481.346
	    C	   22-10-2021 18:01	   1481.346

necesito que al cargar los datos la macro me genere 1 hoja para cada dato de acuerdo con el nombre serian 3 hojas, una para los nombre A, otra para los B y otra para los C.

Les dejo el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub ImportaDatos()
    Application.ScreenUpdating = False
    Dim maybook As Workbooks
    Dim ruta As String
    mybook = ActiveWorkbook.Name
    ruta = ActiveWorkbook.Path
    ChDir ruta & "\"
    mybookTxt = Dir("*.txt")
    While mybookTxt <> ""
    uf = Sheets("Hoja1").Range("B" & Rows.Count).End(xlUp).Row
    Workbooks.OpenText mybookTxt, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, _
            Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
    nomtxt = ActiveSheet.Name
    Sheets(nomtxt).Range("B2", Range("D2").End(xlDown)).Copy Destination:=Workbooks(mybook).Sheets("Hoja1").Cells(uf + 1, "A")
    ActiveWorkbook.Close False
    'Kill (mybookTxt)
    mybookTxt = Dir()
    Wend
    Application.ScreenUpdating = False
    End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

mover datos a otra hoja segun condicion

Publicado por Antoni Masana (498 intervenciones) el 27/10/2021 16:55:49
La forma de hacerlo es abriendo el fichero y leer registro a registro y copiarlo cada uno en su hoja.

Sube varios ficheros TXT y el libro destino y te hago la macro.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

mover datos a otra hoja segun condicion

Publicado por Albert (204 intervenciones) el 27/10/2021 22:40:24
te adjunto el codigo para crear hojas , primero crea una que sea la base y la llamas 0, espero te sirva



Sub CREAR()

Application.ScreenUpdating = False

Worksheets("0").Visible = True
'Worksheets("1").Copy After:=Sheets(Sheets.Count)
Worksheets("Relación").Visible = False
Dim nombre As String
nombre = Usf_totalProveedor.ComboBox1.Value ' aqui puedes poner la celda de una hoja
For x = 1 To Sheets.Count
If Sheets(x).Name = nombre Then nombre = ""
Next x
If nombre <> "" Then
Sheets("0").Select 'Hoja madre

Sheets("0").Copy after:=Sheets(1)
Sheets("0 (2)").Range("dd18").Select
Selection.Copy
Sheets("0 (2)").Select
Sheets("0 (2)").Name = nombre
Sheets(nombre).Range("D18").Select
Else
MsgBox ("No se ha creado hoja nueva," & vbCrLf & vbCrLf & "*- por estar el nombre repetido")
End If
ActiveSheet.Range("d14").Value = ActiveSheet.Name & "/" & Year(Date)
Worksheets("0").Visible = False

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar