VB Grabar textbox en una celda de hoja excel

Uso Visual-Basic 6.0
Me gustaría saber el código fuente exacto, desde 0, para teniendo una hoja calculo Excel creada y Existente y guardada ej: c:\mihoja.xls
Crear uan aplicacion VB, con un "from" que tenga textbox y Command1 .
Al pulsar command1 ... Que grabe y guarde el contenido del textbox en la celda C2 de la hoja de excel c:\mihoja.xls
He mirado cientos de ejemplos para grabar una nueva hoja, exportar datos a excel, etc ... Pero siempre me da error, y al grabar la celda me dice si quiero grabar la hoja con nuevo nombre, en fin, no consigo que abra mi hoja, modifique el contenido de esa celda y la cierre y guarde sin preguntar nada.
1

1 Respuesta

165.775 pts. Más de 35 años en la informática y más de 20 trabajando...
Supongo que habrá muchas formas de hacerlo, pero a mi se me ocurre la siguiente:
Primero tienes que añadir en tu proyecto una referencia a la librería de Excel. En el menú "Proyecto - Referencias" marcas "Microsoft Excel 11.0 Object Library".
A continuación, pones el siguiente código:
Private Sub Command1_Click()
    grabarDatoEnExcel Me.Text1
End Sub
Sub grabarDatoEnExcel(ByVal textoC2 As String)
    Dim miXls As Excel.Application
    Dim miWb As Excel.Workbook
    Dim miSh As Excel.Worksheet
    Set miXls = New Excel.Application
    ' Si quieres que se vea cómo abre el Excel quita el comentario
    ' de la siguiente línea
    ' miXls.Visible = True
    Set miWb = miXls.Workbooks.Open("c:\mihoja.xls", False, False)
    Set miSh = miWb.Sheets("hoja1") ' O la página en la que quieras grabar
    ' Grabamos el valor en la fila 2, columna 3 (celda C2)
    miSh.Cells(2, 3) = textoC2
    ' Guardamos los cambios
    MiWb. Sabe
    ' Cerramos el libro
    MiWb. Close
    ' Y el Excel
    MiXls. Quit
    ' Y vaciamos los objetos usados
    Set miSh = Nothing
    Set miWb = Nothing
    Set miXls = Nothing
End Sub
Si vas a utilizar mucho el Excel, es posible que no te interese estar abriendo y cerrando la aplicación. Tu verás.
Un detalle. Si se interrumpe la ejecución de este código antes de cerrar el objeto "miXls", te quedará un programa Excel ejecutando y no visible. En ese caso hay que cancelar el proceso a mano para evitar que llene la memoria del ordenador.
Me ha funcionado perfectamente. Gracias.
Aún hago algo mal, será como dices debido a errores o a que no le dejo acabar a VB porque una vez que cierro la aplicación creada VB, si abro EXCEL (no el archivo en si, sino el programa Excel sin más) me sale la columna de recuperación de documentos:
Excel ha recuperado los siguientes archivos, guarde los que desee recuperar:
Y sale c:\mihoja.xls
No es que eso me moleste demasiado, en realidad no me afecta para lo que yo quiero, pero no entiendo esas recuperaciones que me sugiere si no me ha dado ningún error la aplicación.
Mil gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas