Te paso a comentar, desde visual Basic exporto unos 10000 registros a una planilla de excel, una vez que fueron exportados combino las celdas que son iguales, el problema es que se cuelga cuando esta combinando.
Pues está raro, porque debería colgarse al exportar por tanta cantidad de registros, si gustas mandame el código de la parte donde combines los datos, supongo que usas un ciclo para recorrer todos los registros e irlos uniendo, tal vez pudieras probar poniendo la instrucción DoEvents dentro de cada ciclo para así darle un respiro a tu sistema, claro, yo no he probado con tantos registros, francamente desconozco que tanta sea la capacidad de excel (a la mejor pudiera ser por ahí parte del problema), pero con las cantidades de registros y poniendo la isntrucción, tardaba pero el sistema respondía en todo momento. Manuel ([email protected])
For J = IndiceInicial To IndiceFinal - 1 'recorro las columnas Columna = ColumnasMerge(J) Fila = IntPosicionFila For i = 0 To CantidadFilas If Bandera = 1 Then valorinicial = Fila Bandera = 0 End If If .Cells(Fila, Columna + IntPosicionColumna).Value <> .Cells(Fila + 1, Columna + IntPosicionColumna).Value Then If i <> 0 Then Bandera = 1 .Range(.Cells(valorinicial, Columna + IntPosicionColumna), .Cells(Fila, Columna + IntPosicionColumna)).merge Else valorinicial = valorinicial + 1 End If End If Fila = Fila + 1 Next Next
Antes que nada disculpa tanta tardanza, pero en verdad que no había tenido tiempo de responder. Pues mira, yo hice la prueba usando otras funciones, tal vez no sea exactamente lo que me pides, pero bueno, también soy nuevo en esto de manejar objetos de excel, lo que hice fue recorrer mediante un ciclo los 10000 registros y suponiendo que la hoja tenga dos columnas, leo cada una de ellas y las guardo en una variable, concateno las dos cadenas y lo guardo en un segundo libro, hasta ahí, tal vez como mejora se pudiera hacer que una vez llenado el segundo libro, se borre el primero y se renombre al segundo con el nombre del primero y listo, ademas de usar arreglos y ciclos para recorrer todas las columnas, en lugar de dejarlo solo para dos. Ahora: si hay un problema que me saltó, y es que se ciclan varios programas al finalizar, en este caso durante la lectura y union de las celdas funciona perfectamente, es decir la ventana responde a todos los eventos, pero tan pronto termina y se escribe el nuevo libro se me cicla excel (aunque no lo tenga abierto), el propio ide de visual basic y el explorer de windows, teniendo que reiniciar. Lo que yo supongo es que es demasiado esfuerzo para el sistema, son 10000 registros y es un hecho que las aplicaciones Microsoft no son precisamente óptimas, por lo que si le tiras a lo grande pues seguramente te van a dar problemas, supongo que es ese el problema, no se. No se que estas haciendo, pero si es algo relacionado a base de datos, o pretendes mejor usar excel como sustituto de base de datos, y para algo muy grande mejor te recomiendo bases de datos más poderosas, usa oracle o sql server, mysql, etc. Bueno pues suerte y disculpa que no te pueda ayudar más, te paso el código a ver si te sirve de algo. Private Sub Command1_Click() Dim ApExcel As Object Dim ApLibro1 As Object Dim ApLibro2 As Object Set ApExcel = CreateObject("Excel.application") Set ApLibro1 = ApExcel.WorkBooks.Open(App.Path + "Prueba1.xls") Set ApLibro2 = ApExcel.WorkBooks.Add ApExcel.Visible = False Dim i As Integer Dim cadena1, cadena2, cadena As String For i = 1 To 10000 DoEvents cadena1 = ApLibro1.Worksheets(1).cells(i, 1).Formula cadena2 = ApLibro1.Worksheets(1).cells(i, 2).Formula cadena = cadena1 + "," + cadena2 ApLibro2.Worksheets(1).cells(i, 1).Formula = cadena Me.Caption = "Fusionando celda " + Str(i) + " de 10000" Next ApLibro2.SaveAs App.Path & "Prueba2.xls" ApLibro1.Close ApLibro2.Close ApExcel.Quit Set ApLibro1 = Nothing Set ApLibro2 = Nothing Set ApExcel = Nothing Me.Caption = "Listo" End Sub
- Anónimoahora mismo
1 respuesta más de otro experto
Respuesta de raulcorrea
1
1
raulcorrea, Programación en Visual Basic, Administrador en Sistemas de...
Eso puede suceder por la cantidad de registros que quieres combinar, ¿qué version de office estas usando? Yo te recomendaría actualizar el office, o usar el más actual.