A pesar de que muchas de las publicaciones que revisé son las mismas que en mi pregunta, ninguna de las respuestas satisface lo que estoy buscando. Si puedes vincularme a uno, con gusto lo leería.VBA - ¿Cómo copiar una fila en Excel de un libro de trabajo a otro?
Tengo un libro de trabajo con hojas de trabajo. Para simplificar, digamos que mi libro de trabajo tiene una hoja de trabajo. Y en mi hoja de trabajo que se llama "Hoja1", hay datos en las celdas A1 a A4.
Lo que yo quiero que mi código VBA que hacer es:
- Copiar la fila 1 (o específicamente las celdas A1 a A4) de libro de trabajo 'A' en la variable Rango 'myRange'
- Cree un nuevo libro, vamos a llamar a este libro de trabajo 'B'
- Dar Cuaderno 'de B por defecto 'Sheet1' un nuevo nombre a 'nombre de la prueba'
- Abrir Libro de Trabajo 'B'(aunque soy consciente de que el código VBA 'Workbooks.Add' se abre una nueva reservar para que este paso sea redundante ya que Workbooks.Add cubre la mitad del punto 2 y 3)
- Pegue 'myRange' en la primera fila del 'Libro de trabajo B'
- Guarde el 'Libro de trabajo B' con el nombre 'Libro de prueba' y una marca de tiempo entre corchetes. El archivo debe ser también de la extensión de archivo "xls"
- Cerrar 'Cuaderno B' y restablecer el 'Cuaderno A'
Lo que tengo hasta ahora es la siguiente:
Sub OpenAndSaveNewBook()
'Declarations
Dim MyBook As String
Dim MyRange As Range
Dim newBook As Workbook
'Get name of current wb
MyBook = ThisWorkbook.Name
Set MyRange = MyBook.Sheets("Sheet1").Range("A1,F1")
'Create/Open new wb
newBook = Workbooks.Add
'Save new wb with XLS extension
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & "TEST-BOOK", _
FileFormat:=xlNormal, CreateBackup:=False
'===NOTE: BEFORE THE FOLLOWING RUNS I NEED TO PERFORM ACTIONS ON CELLS VIA VBA ON
'===WORKBOOK 'A'. DOES THE NEWLY CREATE WORKBOOK BECOME THE PRIMARY/ACTIVE WORKBOOK
'===? AND SO THEN DO I NEED TO ACTIVATE WORKBOOK 'A'?
ActiveWorkbook.Close savechanges:=True
'Return focus to workbook 'a'
MyBook.Activate
End Sub
Como puede ver, me falta el código que se encargará de:
- el pegado de mis datos copiados en el nuevo libro
- el cambio de la nueva Nombre sheet1 del libro a otra cosa
- añadir una marca de tiempo a la cadena de nombre de archivo al guardar
Por último, he incluido una pregunta en mi código que creo que puede tener una mala interpretación del método ActiveWorkbook. AFAIK cuando el código "Workbooks.Add" ejecuta esto se convierte en el Active Workbook, es decir, uno con el foco. ¿Esto afecta a cómo se ejecuta el código de VBA en el Libro de trabajo 'A'? ¿Esto significa que si quisiera agregar código para manipular las celdas del Libro de trabajo 'A', entonces necesitaría usar "MyBook.Activate", donde 'MyBook' contiene la cadena del título real del libro 'A'?
Cualquier ayuda será muy apreciada.
Gracias, QF
Haga 'newBook.SaveAs' y' newBook.Close' también. Como has descubierto, puede ser confuso saber a qué se refiere ActiveWorkbook, por lo que es mejor utilizar referencias explícitas siempre que sea posible. – e100
Gracias por su respuesta. Soy un novato de VBA y recibo un mensaje de error 'Calificador Inválido' después de su sugerencia. Supongo que esto se debe a que MyBook es del tipo incorrecto. Además, esto realmente no tiene sentido para mí, ¿dónde está el comando para pegar en newBook? ¿Podrías elaborar? –
@ e100: Estaba editando mi publicación cuando publicó este comentario :) –