Tablas vinculadas

Tablas vinculadas (20/5/2003)
Gracias por atenderme,
Mi problema es quiero que en una tabla se vayan reflejando los datos que escribo en una primera tabla en otra hoja, hasta ahí todo muy fácil.
El problema es que la tabla en la que escribo los datos tiene siempre el mismo formato y no me es necesario guardarla, si en cambio la segunda en la que se recoge un resumen en cada fila de los datos que he introducido en la primera.
Resumiendo como puedo meter datos en una tabla1, que se queden como resumen en la tabla2, y que cada vez que entre en el archivo la tabla1 esté vacía, pero la tabla2 permanezca con un histórico de los datos que he ido metiendo con anterioridad.
Re: Tablas vinculadas (21/5/2003)
Hola:
La macro que te adjunto hace que cuando la ejecutes copia todo lo que tengas en la Hoja1 a partir de la celda A2 (supuse que en la fila 1 están los títulos que no los querrás copiar) en la Hoja2 a partir de la última celda con datos, hasta que encuentre una celda vacía.
Podes modificar la celda de inicio o el número de hoja de acuerdo a tus necesidades.
Sub ActualizaHoja()
' Macro grabada el 20/05/03 por EMM*
Sheets(2).Select 'hace referencia a la Hoja2 a donde pegará los datos
Range("A2").Select 'revisa la columna A, hasta que encuentre 1 vacía
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
fila1 = ActiveCell.Row
Sheets(1).Select 'hace referencia a la Hoja1 de donde copiará los datos
Range("A2").Select
While ActiveCell.Value <> ""
Selection.EntireRow.Cut
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 1) 'pega a partir de la col A
fila1 = fila1 + 1
ActiveCell.Offset(1, 0).Select
Wend
Application.CutCopyMode = False
End Sub
Habrás notado que cuando termina de ejecutar la macro ya estará la Hoja1 vacía. Si necesitás que recién la vacíe cuando se vuelva a abrir el libro avisame que modificamos eso.
¿Dónde copiar la macro? Con Alt+F11 (o menú Herramientas/Macro/Editor) se abre la ventana del Editor. Ahí vas al menú Insertar / Módulo y en la ventana a la derecha la copias.
Podes crear un atajo de teclado, yendo a Herramientas/Macro/Macros. Seleccionala y con Opciones introducí una tecla (por ejemplo k). Cerrá y ahora podes ejecutarla presionando juntas las teclas Ctrl y k.
Espero te sirva y si es así por favor NO olvides finalizar la consulta.
Un saludo
Elsa
Tablas vinculadas (22/5/2003)
Muchísimas gracias por contestar...
Pero tengo algún problemilla:
1) Al ejecutar me da error de compilación / error de sintaxis en:
Sheets(2). Select 'hace referencia a la Hoja2 a donde pegará los datos
Y no sigue más, no sé si luego habrá algún error más.
2)Me gustaría ya que me das la opción de:
"Si necesitás que recién la vacíe cuando se vuelva a abrir el libro avisame que modificamos eso. "
Que me lo pusieses en otro sitio por si me es más adecuado el resultado. Así tendría las dos opciones...
Muchísimas gracias de nuevo, te estas ganando el "Sobresaliente cum laude"
Tablas vinculadas (22/5/2003)
De nuevo muchisimas gracias;
Ya he resuelto el problema, la macro la he dejado así:
Sub ActualizaHoja()
' Macro grabada el 20/05/03 por EMM*
Sheets(2).Select
Range("A2").Select
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
fila1 = ActiveCell.Row
Sheets(1).Select
Range("A2").Select
While ActiveCell.Value <> ""
Selection.EntireRow.Cut
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 1)
fila1 = fila1 + 1
ActiveCell.Offset(1, 0).Select
Wend
Application.CutCopyMode = False
End Sub
Pero tengo un nuevo problema (y espero que el último, para no molestarte más):
1)La tabla1 donde metemos los datos que más tarde borraremos, tienen las celdas a coger la información salteadas; supongamos que una es la A2, otra la B4 y la última la F7, como podríamos hacer que se pegara en la tabla2 (esta si toda seguida, por ejemplo que empezara en la C5, D5, E5).
2)Me gustaría ya que me das la opción de:
"Si necesitás que recién la vacíe cuando se vuelva a abrir el libro avisame que modificamos eso. "
Que me lo pusieses en otro sitio por si me es más adecuado el resultado. Así tendría las dos opciones...
Por lo demás es perfecta. Gracias
Re: Tablas vinculadas (26/5/2003)
Hola:
Suerte que has encontrado la falla, es porque escribo las respuestas en Word y al pegarlas en el sitio algunos caracteres (como el espacio con Tab o comillas) se distorsionan.
Ayyyyyyy...¿Por qué los usuarios no dicen todo lo que quieren hacer? :-)
En la primer pregunta hablas de ubicar los datos en filas, ahora dices en las celdas C5, D5, E5. Si querés a partir de la columna C cambiá la línea que tenés igual a ésta:
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 3)
Fíjate que antes decía 1: era para la col A pero si querés en la C será 3.
Tampoco sé cuántas celdas son las que vamos a copiar. Si son pocas y cambiantes, podemos pedirlas con Inputbox. Pero si son siempre las mismas podemos guardarlas ya como dato fijo.
Estas 2 cuestiones por favor confirmámelas.
Con respecto al 2do. Punto, para que se borren los datos recién al abrir el libro y no a medida que copiamos en la Hoja2 vamos a hacer lo siguiente:
En la macro que ya tenés, hay que cambiar la línea que dice:
Selection. EntireRow. Cut por esta otra:
Selection. EntireRow. Copy
Y vamos a agregar otra pequeña rutina desde el Editor seleccionando ThisWorkbook.
Allí copiá lo siguiente:
Private Sub Workbook_Open()
Worksheets("Hoja1").Select
Cells.Select
Selection.ClearContents
End Sub
Solo debes reemplazar donde dice Hoja1 por el nombre de tu hoja.
Espero tu confirmación para el resto.
Un saludo
Elsa
Pregunta finalizada. Valoración: 3. (26/5/2003)
Buenas:
No puedo confirmarte exactamente las casillas que van a ser, pero si sé que van a ser 5 ó 6,(dependerá de un formato de factura que todavía no tengo). La buena noticia es que vamos a suponer que por ejemplo estamos hablando de unas celdas determinadas, así yo aprendo y sólo tengo que cambiar el nombre o numeración de las celdas; supongamos que me interesan:
B3,D5,D8,F2,F7.
Lo que esta claro es que de momento mi consulta se refiere siempre a las mismas celdas, ya que aunque de momento no sé cual son exactamente, siempre se van a referir a las mismas, porque como te indique el formato de factura va a ser siempre el mismo.
Lo del inputbox no he terminado de entenderlo, si me lo puedes explicar de las dos formas te lo agradezco (no es necesario, sólo que me gusta aprender.)
Donde meto la última rutina:
Private Sub Workbook_Open()
Worksheets("Hoja1").Select
Cells.Select
Selection.ClearContents
End Sub
No sé...

1 Respuesta

Respuesta
1
Vamos a resumir un poco lo que hicimos hasta acá:
1-La primer macro que te envié hace lo siguiente: copia todas las filas de la hoja1 a la hoja2 a partir de la primer celda vacía que encuentra en la columna A, y se borra el contenido de la hoja1. Si reemplazas la palabra CUT por COPY no se borrará. Esta rutina va en un módulo así se puede utilizar desde cualquier hoja, solo hay que reemplazar el nombre de las mismas.
Alt+F11 para abrir el Editor. Menú Insertar/Módulo. Desde el margen izquierdo lo seleccionas con doble clic y en la ventana en blanco lo pegas. Ya la probaste, anduvo bien pero esta NO es lo que necesitas, así que archivala para otra oportunidad.
2-La segunda rutina: borra TODO el contenido de la Hoja1 al abrir el libro.
Alt+F11 para abrir el Editor. Desde el margen izquierdo seleccionar con doble clic el objetoThisWorkbook y en la ventana en blanco se pega. Recordar de modificar el nombre de la hoja si se va a aplicar para otra. (Nuevamente archivala porque NO es esto lo que necesitás).
3-Macro CeldasFijas: se ingresan en las variables Celda1, 2 etc, el contenido de las celdas de la hoja 3 y se copian a partir de la columna C, todas en la misma fila, en la hoja4.
Se copia en un módulo insertado en el Editor. (Al igual que la macro1)
Sub celdasfijas()
Dim fila1 As Integer
Dim celda1, celda2, celda3, celda4 As Variant
Sheets(4). Select 'hace referencia a la Hoja4 a donde pegará los datos
Range("C2").Select 'revisa la columna C, hasta que encuentre 1 celda vacía
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
fila1 = ActiveCell.Row ?guarda la primer fila vacía.
Sheets("Hoja3").Select 'se ubica en la hoja de donde se copian los valores
celda1 = Range("C2").Value 'definir de dónde se copiarán los valores
celda2 = Range("B3").Value
celda3 = Range("A4").Value
celda4 = Range("C5").Value
Sheets("Hoja4").Select 'se ubica en la hoja donde se copiarán los datos
ActiveSheet.Cells(fila1, 3).Value = celda1 'se introducen los valores a partir de la col C
ActiveSheet.Cells(fila1, 4).Value = celda2
ActiveSheet.Cells(fila1, 5).Value = celda3
ActiveSheet.Cells(fila1, 6).Value = celda4
Sheets("Hoja3").Select 'vuelve a la Hoja3 para borrar las celdas copiadas
Range("C2,B3,A4,C5").Select
Selection.ClearContents
End Sub
(Creo que ésta es la que estás buscando, podes quitar las líneas que borran el contenido de las celdas copiadas)
4- Para borrar las celdas copiadas recién cuando abrís nuevamente el libro será:
Private Sub Workbook_Open()
Worksheets("Hoja3"). Activate
Range("C2, B3, A4, C5").Select ? Aquí se definen cuáles son las celdas a borrar
Selection. ClearContents
End Sub
Esta rutina se copia en la ventana del Editor, haciendo doble clic en el objeto ThisWorkbook del panel de la izquierda.
5-Macro SolicitaCeldas: te la envío porque la has solicitado pero solo es aplicable si tenés 1 o 2 celdas y son variables, sino es muy tedioso tener que ingresar datos en un box.
También se guarda en un módulo (al igual que las macros 1 y 3)
Sub SolicitaCeldas()
Dim fila1 As Integer
Dim celda1, celda2 As Variant 'definir tantas variables como sean necesarias
celda1 = InputBox("Ingrese celda a copiar")
celda2 = InputBox("Ingrese celda a copiar") 'repetir para todas las variables ingresadas
Sheets("Hoja4").Select 'hace referencia a la Hoja4 a donde pegará los datos
Range("C2").Select 'revisa la columna C, hasta que encuentre 1 celda vacía
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Wend
fila1 = ActiveCell.Row 'guarda la primer fila vacía.
Sheets("Hoja3").Select 'se ubica en la hoja3 de donde copiará los datos
Range(celda1).Select
Selection.Copy
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 3) 'pega a partir de la col A
Range(celda2). Select 'repetir estas 3 líneas para todos los InputBox
Selection.Copy
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(fila1, 4) 'pega a partir de la col A
Application.CutCopyMode = False
End Sub
Creo que ahora ya estamos, ¿verdad? Si no, lo seguimos tratando.
Un saludo y por favor no olvides finalizar la consulta (creo que me prometiste otra nota :-) )
Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas