Visual Basic - Pasar de un fichero excel a otro recorriendo filas y columnas

Life is soft - evento anual de software empresarial
 
Vista:

Pasar de un fichero excel a otro recorriendo filas y columnas

Publicado por joaquin (6 intervenciones) el 24/01/2012 14:23:49
Estoy intentado, hacer con un botón en Excel, que me capture los datos de un rango de una hoja excel a otro rango de otra hoja excel, mientras en la hoja origen hayan datos. El botón es algo así, pero no me va.
agadecería ayuda.
El error es se ha producido el error 1004, cuando llega a la variable dIpte

Private Sub CommandButton2_Click()
Dim i, j As Long

Dim dIpte As Double
Dim sCta As String
Dim sRes As String

Application.Workbooks.Open "C:\fichero1.xls"
Workbooks("fichero1.xls").Worksheets("Informe 1").Activate
Application.ScreenUpdating = True

i = 5
j = 5

While Range("C" & i) <> ""
Workbooks("fichero2.xls").Worksheets("Informe 1").Activate
dato = ActiveCell.Value

dIpte = Range("C" & i).Select
sCta = Range("D" & i).Select
sRes = Range("E" & i).Select

'abre un segundo libro
Workbooks("fichero1.xls").Worksheets("Hoja3").Activate
' Copiar los valores de las variables en fichero1
Range("A" & j) = dIpte
Range("B" & j) = sCta
Range("C" & j) = sRes

Workbooks("fichero2.xls").Worksheets("Informe 1").Activate
i = i + 1
j = j + 1

Wend
'Workbooks("fichero2.xls").Close 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.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar de un fichero excel a otro recorriendo filas y columnas

Publicado por Antoni Masana (558 intervenciones) el 26/01/2012 12:25:56
Mira los cambios que propongo.

Una cosa que no entiendo. Abres el fichero1 y activas la hoja informe 1 para luega pegar en la hoja3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Private Sub CommandButton2_Click()
    Dim i, j As Long
'---    Dim dIpte As Double
'---    Dim sCta As String
'---    Dim sRes As String
 
    Application.Workbooks.Open "C:\fichero1.xls"
    Workbooks("fichero1.xls").Worksheets("Informe 1").Activate
    Application.ScreenUpdating = True
 
    i = 5
    j = 5
 
    Workbooks("fichero2.xls").Worksheets("Informe 1").Activate   ' --- Falta esta linea ---
 
    While Range("C" & i) <> ""
        Workbooks("fichero2.xls").Worksheets("Informe 1").Activate
        dato = ActiveCell.Value
 
'---     dIpte = Range("C" & i).Select
'---     sCta = Range("D" & i).Select
'---     sRes = Range("E" & i).Select
 
    Range("C" & i & ":E" & i).Select    ' --- Estas dos estan mejor ---
    Selection.Copy
 
        'abre un segundo libro
        Workbooks("fichero1.xls").Worksheets("Hoja3").Activate
        ' Copiar los valores de las variables en fichero1
 
    Range("A" & j).Select: ActiveSheet.Paste    ' --- Estas dos estan mejor ---
    Application.CutCopyMode = False
 
'---    Range("B" & j) = dIpte
'---    Range("B" & j) = sCta
'---    Range("C" & j) = sRes
 
        Workbooks("Informe_2.xls").Worksheets("Informe 1").Activate
        i = i + 1
        j = j + 1
 
    Wend
    'Workbooks("fichero2.xls").Close False
End Sub


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

Pasar de un fichero excel a otro recorriendo filas y columnas

Publicado por Joaquin (6 intervenciones) el 27/01/2012 12:05:59
Gracias Antoni, pero no me graba, nada en el fichero2, hoja3, la variable cambia a las distintas filas y columnas pero no captura el dato del fichero1, ni lo pasa al fichero2.
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

Pasar de un fichero excel a otro recorriendo filas y columnas

Publicado por joaquin (6 intervenciones) el 29/01/2012 16:59:51
Este es el código que utilizo, lo que intento es que me pase del fichero1, hoja Informe 1del rango A5:cxxxxx; al fichero2, hoja3, desde el rango a5:cxxxxx, los datos llenos que encuentre, lo que ahora me hace es: aparece verdadero, en la celda A5, b5, c5, a6, b6,c6, etc.
con esto yo supongo que debía hacer, si encuentra en la celda a5, del fichero 1, hoja de informe 1 distinta a vacía, que copie el contenido de esa celda en el fichero2, hoja3, a5, así sucesivamente, pero lo que me hace es grabar verdadero en cada celda.
y le tengo que decir .
Do While Cells(nFila, 1) = "", en vez de = a vacía , entra en el bucle con = vacía, cuando este fichero tiene datos en esas celdas.
¿Me puedes decir que hago mal y como debo hacerlo,
Gracias por todo y un saludo.

No lo entiendo, si el fichero que yo quiero que vea es el fichero1, hoja Informe 1, Celdas a5:cxxxx, que tiene datos.

Private Sub cmdBotonx_Click()
Dim nFila As Long
Dim i As Integer
Application.Workbooks.Open "K:\ficehro1.xls"
Worksheets("Informe 1").Activate

nFila = 5
i = 1
Do While Cells(nFila, 1) <> ""

For i = 1 To 3

Workbooks("fichero2.xls").Worksheets("HOJA3").Activate

Hoja3.Select


ActiveCell.Offset(1, 0).Select


Cells(nFila, i) = Workbooks("fichero2.xls").Worksheets("HOJA3").Activate

Next

ActiveCell = Hoja3.Range("A5")

nFila = nFila + 1
Loop


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

Pasar de un fichero excel a otro recorriendo filas y columnas

Publicado por joaquín (6 intervenciones) el 05/02/2012 20:39:33
Aqui os dejo el fichero, que tanto me está costando, este casi funciona, pero lo que quiero es si alguién me puede ayudar, para depurarlo, lo agradecería.
Lo que quiero conseguir, es que: con un botón incorpore datos del fichero1, hoja1 recorriendo las filas y columnas y pasar los datos celda a celda al fichero2 hoja 2, siempre que el fichero1, hoja1 tenga datos en las celdas. Llegará un momento que en la columna A, celda x esté vacía, todo ese registro estará vacío.
Private Sub cmdrellenar_Click()
Dim nFila As Long
Dim i As Integer
ActiveCell.Offset(nFila + i, 0).Select
Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(rowOffset:=0, columnOffset:=0).Activate

Application.Workbooks.Open "C:\tabla\Fichero2"
Worksheets("Hoja2").Activate
Dato = ActiveCell.Value
nFila = 5
i = 1

Do While Cells(nFila, i) = ""
For i = 1 To 2
Workbooks("Fichero2").Worksheets("Hoja2").Activate
Dato = ActiveCell.Value ‘ lee el dato celda activa
Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Value = Dato ‘ Pasa el dato celda activa
ActiveCell.Offset(0, 1).Select ‘cambia a otra columna

Workbooks("Fichero2").Worksheets("Hoja2").Activate
ActiveCell.Offset(0, 1).Select
Workbooks("Fichero2").Worksheets("Hoja2").Activate
Dato = ActiveCell.Value
Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Value = Dato
Next i

For i = 1 To 1

Workbooks("Fichero2").Worksheets("Hoja2").Activate
Dato = ActiveCell.Value
ActiveCell.Offset(1, -2).Select ‘ cambia una fila y 2 col atrás
Dato = ActiveCell.Value
Workbooks("Fichero2").Worksheets("Hoja2").Activate

Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(1, -2).Select
ActiveCell.Value = Dato
Next i

Workbooks("Fichero2").Worksheets("Hoja2").Activate
ActiveCell.Offset(0, 1).Select
Dato = ActiveCell.Value

Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Dato
Workbooks("Fichero2").Worksheets("Hoja2").Activate
ActiveCell.Offset(0, 1).Select
Dato = ActiveCell.Value

Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Dato
Loop


nFila = nFila + 1
For i = 1 To 2
Workbooks("Fichero2").Worksheets("Hoja2").Activate
Dato = ActiveCell.Value
Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Value = Dato

Next i

For i = 1 To 1
nFila = nFila + 1
Workbooks("Fichero2").Worksheets("Hoja2").Activate
Dato = ActiveCell.Value
ActiveCell.Offset(1, -2).Select
Dato = ActiveCell.Value

Workbooks("Fichero2").Worksheets("Hoja2").Activate

Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(1, -2).Select
ActiveCell.Value = Dato
Next i
Workbooks("Fichero2").Worksheets("Hoja2").Activate
ActiveCell.Offset(0, 1).Select
Dato = ActiveCell.Value

Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Dato

Workbooks("Fichero2").Worksheets("Hoja2").Activate
ActiveCell.Offset(0, 1).Select
Dato = ActiveCell.Value

Workbooks("fichero1").Worksheets("Hoja1").Activate
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Dato
Dato = ActiveCell.Value

Workbooks("Fichero2").Worksheets("Hoja2").Activate
Dato = ActiveCell.Value
ActiveCell.Offset(1, -2).Select
Dato = ActiveCell.Value

If ActiveCell.Value = "" Then
Workbooks("fichero1").Worksheets("Hoja1").Activate
Cells(nFila + 1, 1) = "esta casilla está en blanco"
Else
Cells(nFila, i) = " esta casilla no está en blanco"
End If
Workbooks("Fichero2").Worksheets("Hoja2").Close
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