La Web del Programador: Comunidad de Programadores
 
    Pregunta:  569 - ACCESO A EXCEL DESDE VISUAL C++
Autor:  Alfonso Chaves Coronilla
Hola. Quiero acceder a un cuaderno Excel desde Visual C++ 5. Dispongo de un control ActiveX que he sacado de Visual Basic %, en concreto el xl5en32.olb. Pues bien, importo dicho ActiveX desde Visual C++ como una nueva Clase. Hasta aquí bien. El problema llega al intentar arrancar el objeto aplicacion Excel. Desde Visual Basic, va como la seda. Se crea un objeto de ese tipo y arranca al un proceso Excel (automation) solito. En cambio desde Visual C++ no he sido capaz. Agradecería mucho que alguien me echase un cable en cualquier idea o sugerencia que me pueda ayudar.
Gracias de antemano.

  Respuesta:  Fernando Fernández
Hola :))
No sé si desde el entorno de Borland será lo mismo que desde el entorno de Visual, pero te envio una chuletas que a mi me han ayudado un poco. Espero que a ti también te ayuden :)

/*
// ------------------------------------------------------------------------
// MANEJO DE UNA HOJA EXCEL.
// ------------------------------------------------------------------------
// Información recogida de:
// http://lfe.developpez.com/Excel/
// ------------------------------------------------------------------------
#include <utilcls.h> // Librería necesaria.

// Variables que emplearemos.
Variant xMSExcel; // Aplicación EXCEL.
Variant xWorkbooks; // Libros en general.
Variant xWorkbook; // Un libro.
Variant xWorksheet; // Una hoja del libro.
Variant xCell; // Una celda de la hoja.
Variant vFileName, vRange; // Nombre de fichero y de celda.
AnsiString aValue; // Valor de una celda.

xMSExcel = Variant::GetActiveObject("Excel.Application"); // Crear aplicación excel.
xMSExcel.OlePropertySet("Visible", true); // Hacerla visible.

vFileName = "prueba.xls"

xWorkbooks = xMSExcel.OlePropertyGet("Workbooks"); // Documento.
xWorkbook = xWorkbooks.OleFunction("Add"); // Nueva hoja.
xWorkbook = xWorkbooks.OleFunction("Open", vFileName);// Abrir.
xWorkbook = xWorkbooks.OleFunction("Open", vFileName, vLink, vReadOnly); // Abrir sólo lectura.
xWorkbook.OleProcedure("Save"); // Guardar.
xWorkbook.OleProcedure("Saveas", vFileName); // Guardar como...
xWorksheet = xWorkbook.OlePropertyGet("Worksheets", vSheetName); // Accedr a una hoja por nombre.

vRange = "D3";
xCell = xWorksheet.OlePropertyGet("Range", vRange); // Acceder a una celda.
aValue = xCell.OlePropertyGet("Value"); // Leer el valor de una celda.
xCell.OlePropertySet("Value", aValue); // Escribir valor de la celda.

xMSExcel.OleFunction("Quit");
xMSExcel = Unassigned;
// ------------------------------------------------------------------------
*/

Joe!! me ha costado más tabularlo que encontrar la solución :p
Venga, saludos desde Palma de Mallorca.

  Respuesta:  roberto morales
Hola, ahi te va:
1-creas una aplicación de dialogo
2-en el class wizard entra al tab de 'automation'
3-das click en el botón 'add class', y vas a esta carpeta:
'C:\Program Files\Microsoft Office\Office\'
4-seleccionas el archivo Excel9.olb(depende de tu version de excel)
5-en InitInstance de la clase de tu aplicación, incertas este codigo:
if(!AfxOleInit()) // va al principio de la definición
{
AfxMessageBox("Could not initialize COM dll");
return FALSE;
} // va al principio de la definición
6-agregas #include <afxdisp.h> a TuProyecto.cpp(al principal)
luego vas a CTuProyectoDlg.cpp(al dialogo) y aqui agregas #include "excel8.h" despues de #include "stdafx.h"
7-creas un boton y su controlador de on_click donde incertas:
_Application app; // Objeto de aplicación de Excel
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't start Excel.");
}
else
{
app.SetVisible(TRUE); // lo hace visible
AfxMessageBox ("Excel is Running!");
} //cualquier duda comunicate conmigo, y sino, todo esto lo he sacado de la pagina de MSDN, oye porcierto, lo que no he podido controlar es Visual Basic en vez de excel.

  Respuesta:  Gustavo Muro
Para usar tipos de letras en modo grafico , puedes hacerlo con settextstyle(Tipo de fuente,direccion,tamaño) es necesario que tengas incluidos los archivos chr en el directorio bgi del compilador y en el directorio de trabajo sonde ejecutes la aplicacion.