Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Es posible copiar los datos de Excel a Builder???

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Es posible copiar los datos de Excel a Builder??? Responder citando

Me gustaria saber si tengo la aplicación
Excel abierta e inserto en la Columna A por
ejemplo 12 datos, es posible coger esos 12
datos automáticamente (exportarlos) a Builder
a un array de números, por ejemplo.

Gracias

Volver arriba
Mensaje    Asunto: Es posible copiar los datos de Excel a Builder??? Responder citando

Hola Alfonso, a ver si este ejemplo te ayuda. Muestra como leer/escribir en una celda del EXCEl que tengamos abierto:

- Hay que añadir #include <Comobj.hpp> para BCB3, 4 y 5 o bien #include <oleauto.hpp> para BCB1

// -------- Busca alguna instancia de EXCEL abierta
Variant oExcel, oSheet;
try {
    oExcel = GetActiveOleObject("Excel.Application");
}
catch(EOleSysError &E) {
    ShowMessage("Error: no se encontro EXCEL abierto.");
    return;
}

// -------- Selecciona la hoja activa
oSheet = oExcel.Exec(PropertyGet("ActiveSheet"));
if (oSheet.IsEmpty()) {
    ShowMessage("No hay ninguna hoja activa");
    return;
}

int Columna, Fila;
// -------- Lee una celda
Columna = 1;
Fila = 1; //letra A
String Valor = oSheet.Exec(PropertyGet("Cells") << Fila << Columna);
ShowMessage(Valor);

// -------- Escribe algo en una celda
Columna = 1;
Fila = 3; //letra C
oSheet.Exec(PropertySet("Cells") << Fila << Columna << "HOLA");

oExcel = oSheet = Unassigned;

---
Saludos.

Volver arriba
Mensaje    Asunto: Responder citando

Hola Leo!
tengo el siguiente codigo y solo me funciona con la primera fila, pruebalo y me dices si te funciona correctamente, o bien que error puedo tener.

el problema radica cuando habilito la linea
oSheet.Exec(PropertySet("Cells") << iFilaAx << iColumAx << String(100));

int Colum, Fila, MaxFila = 10, MaxColum = 3;
int iFilaAx, iColumAx;
int iMaxValueToWrite = 65535, iValueToWrite=0, iAuxiliar;
String sValor;

Variant oExcel, oSheet;

try
{
oExcel = GetActiveOleObject("Excel.Application");
}
catch(EOleSysError &E)
{
ShowMessage("Error: no se encontró EXCEL abierto.");
return;
}

// -------- Selecciona la hoja activa
oSheet = oExcel.Exec(PropertyGet("ActiveSheet"));
if (oSheet.IsEmpty())
{
ShowMessage("No hay ninguna hoja activa");
return;
}

//Escribir en la columna A, B y C hasta la fila 10
for(Fila = 1; Fila <= MaxFila; Fila++)
{
for(Colum = 1; Colum <= 3; Colum++)
{
iAuxiliar = iValueToWrite;
Memo1->Lines->Add("Fila " + String(Fila) + " (" + String(MaxFila) + ")" + " Colum " + String(Colum) + " (" + String(MaxColum) + ")");
iFilaAx = Fila;
iColumAx = Colum;
oSheet.Exec(PropertySet("Cells") << iFilaAx << iColumAx << String(100));
// iValueToWrite++;

// if(iValueToWrite == iMaxValueToWrite) iValueToWrite = 0;
}
}
oExcel = oSheet = Unassigned;


Muchas gracias por su colaboracion

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Tal como esta, copiando y pegando el código, me funciona perfectamente. Lo he probado en el BCB1, 4 y 6 con el Office2003 en WindowsXP. Aunque todos los ejemplos que he puesto en el foro me han funcionado siempre correctamente en las distintas versiones de Office.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

NOOO esto me tiene loco
Shocked Mad Shocked Question
lo estoy ejecuntando en WinXP Pro tengo BCB6, no me funciona, y el comportamiento no es constante, es decir:
Las variables maxColum toma un valor todo grande (no es el mismo siempre) otras veces dice que es un error ole en la linea que describí anteriormente, y ahora lo pruebo y solo se ejecuta una ves el for sin mostrar mensaje de error.

Que se les ocurre?

Muchas gracias
Saludos
Volver arriba
Mensaje    Asunto: Responder citando

Buenos dias colegas!!!

Necesito que me ayuden a entender algo con relacion al tema que estamos tratando:

Necesito escribir y leer en unas celdas de Excel constante mente, lo ejecuto a través de un Timer, bueno lo que pasa es que al tratar de escribir mas de una vez dentro de un for aparece un error de excepcion de memoria, si lo hago una sola vez (sin el for), me funciona bien, lo que tengo es lo siguiente:
(Me estoy basando en el ejemplo en el ejemplo que propuso __Leo)

//---------------------------------------------------------------------------
//Esto lo defino en la punto H.
private: // User declarations
int iMaxValueToWrite, iValueToWrite;
Variant oExcel, oSheet;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
iContTimer = 0;
iMaxValueToWrite = 90, iValueToWrite=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
try
{
oExcel = GetActiveOleObject("Excel.Application");
}
catch(EOleSysError &E)
{
ShowMessage("Error: no se encontró EXCEL abierto.");
return;
}

// -------- Selecciona la hoja activa
oSheet = oExcel.Exec(PropertyGet("ActiveSheet"));

if (oSheet.IsEmpty())
{
ShowMessage("No hay ninguna hoja activa");
return;
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int Colum, Fila, MaxFila = 3, MaxColum = 3;
String sValor;

//Escribir en la columna A, B y C hasta la fila 10
for(Fila = 1; Fila <= MaxFila; Fila++)
{
for(Colum = 1; Colum <= MaxColum; Colum++)
{
sValor = String(iValueToWrite);
Memo1->Lines->Add("Fila " + String(Fila) + " (" + String(MaxFila) + ")" + " Colum " + String(Colum) + " (" + String(MaxColum) + ")" + " "+sValor);

oSheet.Exec(PropertySet("Cells") << Fila << Colum << iValueToWrite);

iValueToWrite++;

if(iValueToWrite == iMaxValueToWrite) iValueToWrite = 0;
}
}
}


Siento mucho que el tema se haga tan extenso pero no he logrado entender que es lo que pasa, cuento con su ayuda y de ante mano muchas gracias.
PD: No entiendo muy bien la sintaxis de la linea

oSheet.Exec(PropertySet("Cells") << Fila << Colum << iValueToWrite);


Saludos y felices dias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.