Error al transferir matriz a excel

17/09/2007 - 01:26 por Daniel Pozzi | Informe spam
Estoy tratando de transferir una matriz en vb a excel en un solo paso, tengo
varios ejemplos de cómo hacerlo. Dimensiono la matriz como variant y en ella
guardo texto. Mientras no almacene una string larga funciona correctamente,
pero con una string de ej. 1060 caracteres, me da error.
Si transfiero la matriz celda por celda, funciona correctamente.

esto funciona correctamente:

Dim rgnlineas(1 To 10000, 1 To 1) As Variant
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object

'Start a new workbook in Excel
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Add

..

Set oSheet = oBook.Worksheets(1)
For f = 1 To contlineas
oSheet.cells(f, 1) = rgnlineas(f, 1)
Next
oExcel.Visible = True

..
esto no funciona, da error cuando len(rgnlineas(xx,1)) es grande:

Set oSheet = oBook.Worksheets(1)
oSheet.Range("a2:a10000").Value = rgnlineas

oExcel.Visible = True


Pueden ayudarme, gracias

Daniel

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
18/09/2007 - 04:03 | Informe spam
hola, Daniel !

No me funciona la linea del Rept. Ya lo estudiare.



1) no te funciona porque estoy usando una funcion de hoja de calculo a trves del objeto 'Application'
en *tu* caso [a traves de VB] cambia de Application a -> oExcel

Pero igual te comento q lo q pretendo hacer es pegar TODA la matriz de una ves en excel y no celda a celda como lo haces.



2) la instruccion que buscas es [de nuevo] usando una funcion de hoja de calculo... -> Transponer(...)
usada desde excel es una instruccion del tipo:
-> Range("a1").Resize(UBound(Matriz) + 1) = Application.Transpose(Matriz)
usada desde VB vuelves a cambiar Application por -> oExcel
-> oSheet.Range("a2").Resize(contlineas).Value = oExcel.Transpose(rgnlineas)

Asi celda a celda lo hace bien. El problema se presenta cuando quiero transferir TODA la matriz
(oSheet.Range("a2").Resize(contlineas).Value = rgnlineas).
Me da la impresion q no es lo mismo hacerlo celda a celda q todo de una ves, q se complica con los string largos.



3) [definitivamente] no es lo mismo hacerlo linea-a-linea [o celda-a-celda] que por el rango *de golpe*
entre los pros y contras, esta el que linea-a-linea SI puedes incluir textos superiores a 255 caracteres de largo

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#7 Daniel Pozzi
18/09/2007 - 04:33 | Informe spam
Gracias! entonces la ventaja es la rapidez en el proceso y la contra q no
puedo transferir mas de 255 caracteres.
Gracias nuevamente!

Daniel



"Héctor Miguel" escribió en el mensaje
news:eabnagZ%
hola, Daniel !

No me funciona la linea del Rept. Ya lo estudiare.



1) no te funciona porque estoy usando una funcion de hoja de calculo a
trves del objeto 'Application'
en *tu* caso [a traves de VB] cambia de Application a -> oExcel

Pero igual te comento q lo q pretendo hacer es pegar TODA la matriz de
una ves en excel y no celda a celda como lo haces.



2) la instruccion que buscas es [de nuevo] usando una funcion de hoja de
calculo... -> Transponer(...)
usada desde excel es una instruccion del tipo:
-> Range("a1").Resize(UBound(Matriz) + 1) =
Application.Transpose(Matriz)
usada desde VB vuelves a cambiar Application por -> oExcel
-> oSheet.Range("a2").Resize(contlineas).Value =
oExcel.Transpose(rgnlineas)

Asi celda a celda lo hace bien. El problema se presenta cuando quiero
transferir TODA la matriz
(oSheet.Range("a2").Resize(contlineas).Value = rgnlineas).
Me da la impresion q no es lo mismo hacerlo celda a celda q todo de una
ves, q se complica con los string largos.



3) [definitivamente] no es lo mismo hacerlo linea-a-linea [o
celda-a-celda] que por el rango *de golpe*
entre los pros y contras, esta el que linea-a-linea SI puedes incluir
textos superiores a 255 caracteres de largo

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida