Macro que abra un libro nuevo y pregunte que nombre le pondré

Hice una macro con excel 2002, (mediante el grabador), que copia un rango de celdas de la hoja activa de un libro, crea un libro nuevo y pega en la hoja 1 lo copiado.

Funciona bien, el libro queda abierto con nombre Libro 1, o Libro 2, etc.

Mi pregunta es si la macro puede contener de alguna manera la pregunta de que nombre tendrá el nuevo libro, tal vez abriendo el cuadro de diálogo de windows o como sea y permitir escribirlo y guardarlo.

1 Respuesta

Respuesta
1

Podrías preguntar con un InputBox, ej:

nbre=InputBox("Ingresa nombre para el libro")

'si cancela la ventana o no se ingresa nada cancela el proceso

If nbre = "" Then Exit Sub

'AHORA viene todo tu código y al momento de guardar si el libro está activo usarás algo así:

ActiveWorkbook.SaveAs ruta & nbre & ".xls"

Previamente habrás definido la ruta donde se guardará. Si se trata de la misma que el libro activo la instrucción te debe quedar:

ActiveWorkbook.SaveAs thisWorkBook.Path & "\" & nbre & ".xls"



Sdos. Comentame si todo te quedó claro y resuelto finalizando la consulta


Hola Elsa!

Adapté tu idea a mi macro así:

Sub Crea_archivo_solo_valores()
Sheets("Resu").Select
Columns("H:M").Select
Application.CutCopyMode = False
Selection.Copy
Workbooks.Add
nbre = InputBox("SE CREARA ARCHIVO APARTE(no afecta a éste)INGRESA NOMBRE PARA EL ARCHIVO")
If nbre = "" Then Exit Sub
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveWindow.DisplayZeros = False
ActiveWorkbook.SaveAs ruta & nbre & ".xls"
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & nbre & ".xls"
End Sub

Funciona bien, excepto cuando el nombre de archivo ingresado ya existe, entonces aparece la advertencia de windows y al cancelar da error.

Puedo tener mucho cuidado con eso, pero podría pasar.

Si tienes alguna idea me dices.

Muchas gracias!

T.Pose

Tengo varias ideas ;)

Si 'ruta' no está definida con un valor, esa línea no vá, dejá solamente la de ThisWorkbook que hará que se guarde en la misma carpeta que el libro principal.

1- Podes colocar un control de error que te indique lo que pasa y al mantener abierto el libro te permite guardarlo manualmente con otro nombre:

On Error GoTo sinGuardar
'ActiveWorkbook.SaveAs ruta & nbre & ".xls"
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & nbre & ".xls"
Exit Sub
sinGuardar:
MsgBox "El libro no se guardó xq ya existe otro con ese nombre. Guardalo manualmente"
End Sub

- La otra idea es realizar todo el control al inicio: de que exista la ruta (si vas a definir alguna), de que exista o no un archivo de ese nombre en esa ruta, de que el nombre sea un nombre válido para Excel, etc... esto requiere de consulta aparte una vez que finalices ésta.

Añade tu respuesta

Haz clic para o