¿Respaldar un formulario en archivo CSV con VBA excel?

Tengo un formulario hecho en Excel VBA que recibe información y la pasa directamente (con una macro) a una hoja de excel llamada "Datos". Esta hoja solo sirve de respaldo y en realidad el usuario nunca la ve. Lo que necesito es que cuando el usuario presione el botón "Guardar" del formulario se haga un archivo .csv que contenga los datos de la hoja de excel llamada "datos". El problema que tengo es que al momento de guardar, no solo se guarda el archivo con el nombre que requiero, sino que me cambia también el nombre de la hoja "datos" e incluso de todo el libro de Excel. No se como evitar eso, lo ideal sería que se guardara solo el archivo con un nombre tipo "nombre del usuario" y el libro y la hoja quedaran sin cambios.

Este es el código que tengo:

Sub generaCSV()
     Set Hoja = Worksheets("Datos del paciente")
     nombre_archivo = UserForm2.Datos_Nombre.Value
     a = MsgBox(nombre_archivo, vbOKOnly) 
     Sheets("Datos del paciente").Copy Before:=Worksheets("Interfaz tratamiento")
     Worksheets("Datos del paciente").SaveAs Filename:= _
     "C:\Documents and Settings\Daniela\Mis documentos\Cosas de la escuela\Tesis\" +       nombre_archivo + ".csv", FileFormat:=xlCSV, CreateBackup:=True
     Sheets(nombre_archivo).Delete
End Sub

Espero haber planteado bien mi pregunta y por favor :s es caso de vida o muerte.

1 Respuesta

Respuesta
1

Te anexo un ejemplo, crea un csv de la hoja "datos", y no te modifica tu libro actual

Ya después si quieres borras la hoja "datos" de tu libro con esto

Application.DisplayAlerts = False
Worksheets("datos").Delete
Application.DisplayAlerts = True

Esta sería la macro

Sub guardacsv()
'por.dam
    Sheets("datos").Select
    Sheets("datos").Copy
    carpeta = "C:\Documents and Settings\Daniela\Mis documentos\Cosas de la escuela\Tesis\"
    nombre_archivo = UserForm2.Datos_Nombre.Value
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=carpeta & nombre_archivo, _
    FileFormat:=xlCSV, CreateBackup:=False
    ActiveWindow.Close
    Application.DisplayAlerts = True
End Sub

Pruébalo y me comentas

Saludos. Dam
Si es lo que necesitas.

Perfecto, muchas gracias! :D

Te preparo un ejemplo y te lo envío para que lo revises.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas