Forums Últimos mensajes - Powered by IBM
 

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
 

Leer las respuestas

#1 Héctor Miguel
17/09/2007 - 04:02 | Informe spam
hola, Daniel !

1) no se si con otras aplicaciones si puedas *empatar* matrices de diferentes dimensiones...
pero en excel [y hasta donde se] NO es posible hacerlo de esta manera :-(( [me explico]:

2) asumiendo que realmente *llenaste* tu variable de matriz variant con los 10000 elementos:
-> Dim rgnlineas(1 To 10000, 1 To 1) As Variant

a) en la forma donde SI te esta funcionando usas un bucle 'uno por uno' y estas iniciando desde la fila 1 [celda 'A1']
-> hasta n_elementos [n = For f = 1 To contlineas] con lo que avanzas desde 1 hasta 10000

b) la forma donde NO te esta funcionando, estas iniciando desde la fila 1 [celda 'A2']...
para *tratar* de *llenar* un rango de 9999 filas con una matriz de 10000 elementos -???-
-> oSheet.Range("a2:a10000").Value = rgnlineas

-> prueba cambiando a [p.e.] -> oSheet.Range("a2:a10001").Value = rgnlineas
o... oSheet.Range("a2").Resize(contlineas).Value = rgnlineas
o... ?????

3) por lo relacionado con cadenas de longitud mayores a xxx caracteres... revisa:
XL2000: Error de "255 caracteres de celda" cuando el error copia hoja de calculo
http://tinyurl.com/4gbmy [traduccion automatica al espanol]
XL2000: "255 Characters in Cell" Error When Copying Worksheet
http://tinyurl.com/5upbf [version 'original' -ingles-]
Data truncated to 255 characters with Excel ODBC driver
http://support.microsoft.com/kb/189897/en

-> hay mas articulos relacionados... solo en tanto comentas *como* rellenas tu variable de matriz variant :))

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

__ la consulta original __
Estoy tratando de transferir una matriz en vb a excel en un solo paso, tengo varios ejemplos de como 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

Preguntas similares