Excel - Una macro para copiar filas y columnas
Problema
Estoy trabajando en una macro para copiar de un libro de trabajo (hoja) y pegar en otro libro de trabajo (hoja)
Office 2007 y Windows XP
En el primer libro de trabajo, tengo todos los datos que de acuerdo con los requisitos. se filtra. ¿Cómo decir en macro para copiar los registros de 'resultado'? Estos registros de resultados siempre están cambiando.
Estoy grabando macro con estos pasos:
- 1. abrir output.xlsx (libro de trabajo de destino)
- 2. Ctrl + A (para seleccionar todos los datos que ya están allí) y borrar (todos)
- 3. libro de origen (input.xlsm) copia los registros de resultados
- 4. pegar especial en el libro de destino
- 5. Souce el libro de trabajo y deja de grabar macro
El resto de la macro funciona bien, el problema es cómo configurar el rango de registros de resultados, que puede decir que es dinámico.
A continuación se muestra la macro, pero su código generado automáticamente:
Sub Macro1 () '' Macro21 Macro '' Libros de trabajo. Nombre de archivo abierto: = _ "O: dataorderrefList-output.xltx" _, Editable: = True Selection.CurrentRegion.Select Selection.Clear Range ("A1"). Seleccione Windows ( "ReferenceList.xlsm"). Active Selection.CurrentRegion.Select Selection.Copy Windows ("refList-output.xltx"). Active Selection.PasteSpecial Paste: = xlPasteColumnWidths, Operation: = xlNone, _ SkipBlanks: = False, Transpose: = False Selection.PasteSpecial Paste: = xlPasteFormats, Operation: = xlNone, _ SkipBlanks: = False, Transpose: = False Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False Range (" A1 "). Seleccione Application.CutCopyMode = False ActiveWorkbook.Save Windows (" ReferenceList.xlsm "). Active el rango (" Table_Query_from_MS_Access_Database [#Headers, [Order No]] "). Seleccione End Sub
Está funcionando bien, pero tengo que hacer una selección basada en los registros de resultados y también en otro formato.
Solución
He probado mi sugerencia. cuando MERAMENTE selecciona una selección de datos filtrados incluye las celdas ocultas también (ocultas debido al filtrado) en su lugar, debe usar la propiedad "specialcells" como me sugirió. puede modificar sobre esa base
También hay una disposición SIN activar las diferentes ventanas o seleccionar diferentes rangos.
Tengo alternativa para la porción de tu macro en el pasado.
ThisWorkbook.Worksheets ("sheet1"). UsedRange.SpecialCells (xlCellTypeVisible) .Copia Workbooks ("book4"). Worksheets ("sheet1"). Range ("A1"). PasteSpecialVolucción de la paleta : = xlPasteFormats _, Pegar: = xlPasteColumnWidths
Si los dos libros son libros guardados, debe usar "book4.xls" o "book4.xlsm" "este libro significa el módulo del libro donde está estacionada la macro. Puede intentar modificar la macro.
Nota
Gracias a venkat1926 por este consejo en el foro.