Programación General > Visual Basic 6.0 e inferiores
error procedimiento demasiado largo
joko1220:
buanas, espero que me puedan ayudarme, mi problema es este tengo un programa que hace las facturacion de una empresa. me sale un error que dice error procedimiento demasiado largo. ya se por que tengo mas de 1600 lineas mi problema es que no se que hacer por que de hay yo imprimo en excel un reporte por eso se hace las 1600 lineas como haria para porder dividir el codigo y poder continuar imprimiendo el mismo reporte. para continuar con mi programa.
gracias..
Nebire:
Si no recuerdo mal los procedimientos están limitados a un tamaño de 64 kb (que se cargan en memoria de una sola vez)... tus 1600 líneas pueden ser aproximadamente 120 kb (depende del tamaño de las líneas)... sin embargo eso no significa que no se pueda ejecutar, todo lo que tienes que hacer es repartir el código en varios procedimientos... Es bastante posible que estés produciendo 'código espagueti'...
Es buen seguro que mucho código que tienes en ese procedimiento estaría mejor ubicado en su propio procedimiento...
Espón 30 ó 40 líneas y te muestro in situ como repartirlo (ya sería mala suerte que justo fueras a exponer un conjunto de líneas que precisamente deban ir juntas y seguidas)... básicamente un procedimiento de más de 200 líneas es seguro que parte de elló puede moverse a otro procedimiento.
joko1220:
este es una parte del código. En el mismo procedimiento ajusto las casillas de Excel y de hay mismo escribo información de la base de datos. yo intente colocar un pedazo del código que genera Excel dentro de otro procedimiento pero me sale otro error que dice falta crear el objecto algo así. yo no quiero abrir otra vez Excel quiero continuar imprimiendo en la misma hoja.
espero que este pedazo de código sea el conveniente. gracias
ApExcel.Range("A16:N17").Borders(xlEdgeBottom).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlEdgeBottom).Weight = xlThin
ApExcel.Range("A16:N17").Borders(xlEdgeBottom).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlEdgeRight).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlEdgeRight).Weight = xlThin
ApExcel.Range("A16:N17").Borders(xlEdgeRight).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlInsideVertical).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlInsideVertical).Weight = xlThin
ApExcel.Range("A16:N17").Borders(xlInsideVertical).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).Weight = xlThin
ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlDiagonalDown).LineStyle = xlNone
ApExcel.Range("A16:N17").Borders(xlDiagonalUp).LineStyle = xlNone
ApExcel.Range("A16:N17").Borders(xlEdgeLeft).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlEdgeLeft).Weight = xlMedium
ApExcel.Range("A16:N17").Borders(xlEdgeLeft).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlEdgeTop).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlEdgeTop).Weight = xlMedium
ApExcel.Range("A16:N17").Borders(xlEdgeTop).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlEdgeBottom).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlEdgeBottom).Weight = xlMedium
ApExcel.Range("A16:N17").Borders(xlEdgeBottom).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlEdgeRight).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlEdgeRight).Weight = xlMedium
ApExcel.Range("A16:N17").Borders(xlEdgeRight).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlInsideVertical).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlInsideVertical).Weight = xlThin
ApExcel.Range("A16:N17").Borders(xlInsideVertical).ColorIndex = xlAutomatic
ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).LineStyle = xlContinuous
ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).Weight = xlThin
ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).ColorIndex = xlAutomatic
ApExcel.Range("A1:F17").Font.Bold = True
'Adodc6.Recordset.MoveFirst
'CODIGO DE MATERIALES
i = 1
'j = 1
Dim VarSumatoria As Double
Dim VarSumatoria2 As Double
Dim indi As String
VarSumatoria = 0
VarSumatoria2 = 0
VarStop = 0
VarCantCortes = 0
NumeroCorte2 = FrmCrearCotizacion.ObtenerNumero(TxtDescripcionCorte6)
NumeroCorte2 = NumeroCorte2 - 1
VarIdCorte1 = TxtIdCorte
Varo = 0
L = 7
S = 8
Z = 18
ex = 1
For cor = 1 To ValorCorte
indi = cor
Limpiavec
Z = 18
Adodc6.Recordset.MoveFirst
Do While Not Adodc6.Recordset.EOF
If TxtIdCotizacion6 = FrmCrearCotizacion.TxtIdCotizacion Then
If ItenExiste6 = False Then
VectorItemAvance(Varo) = TxtItem6
ApExcel.Cells(Varo + 18, 1).Formula = Val(TxtItem6) 'TxtItem6
ApExcel.Cells(Varo + 18, 2).Formula = TxtNOmbreItem6 'TxtNOmbreItem6
ApExcel.Cells(Varo + 18, 3).Formula = TxtUnidadItem6 'TxtUnidadItem6
ApExcel.Cells(Varo + 18, 4).Formula = TxtCantidadPresupuestada6 'cant
ApExcel.Cells(Varo + 18, 5).Formula = Val(TxtVrInitItem6) 'Precio unitario
ApExcel.Cells(Varo + 18, 6).Formula = TxtVrInitItem6 * TxtCantidadPresupuestada6 'Vr total
If indi = ex Then
ApExcel.Cells(17, L).Formula = "CANT"
ApExcel.Cells(17, S).Formula = "Vr,TOTAL"
ApExcel.Cells(16, L).Formula = "AVANCE " + indi
'Unir Celdas
ApExcel.Range("G16:N16").HorizontalAlignment = xlCenter
ApExcel.Range("G16:N16").VerticalAlignment = xlBottom
ApExcel.Range("G16:N16").WrapText = False
ApExcel.Range("G16:N16").Orientation = 0
ApExcel.Range("G16:N16").AddIndent = False
ApExcel.Range("G16:N16").IndentLevel = 0
ApExcel.Range("G16:N16").ShrinkToFit = False
ApExcel.Range("G16:N16").ReadingOrder = xlContext
ApExcel.Range("G16:N16").MergeCells = False
ApExcel.Range("G16:H16").Merge
ApExcel.Range("I16:J16").Merge
ApExcel.Range("K16:L16").Merge
ApExcel.Range("M16:N16").Merge
ex = ex + 1
End If
Do While Not Adodc1.Recordset.EOF
If TxtItem6 = TxtItem1 And TxtIdCotizacion1 = TxtIdCotizacion6 And TxtDescripcionCorte1 = "Corte No " + indi Then
If FrmCrearCotizacion.FechaMayor(TxtFecIngresoCant1, TxtFechaInicio1) = True Then
If FrmCrearCotizacion.FechaMayor(TxtFechaFin1, TxtFecIngresoCant1) = True Then
VarSumatoria = TxtCantidadEjecutada1 + VarSumatoria 'cant eje
End If
End If
End If
Adodc1.Recordset.MoveNext
Loop
Adodc1.Recordset.MoveFirst
ApExcel.Cells(Varo + Z, L).Formula = VarSumatoria 'cant eje
ApExcel.Cells(Varo + Z, S).Formula = TxtVrInitItem6 * VarSumatoria 'Precio unitario
SUMATOAVA = TxtVrInitItem6 * VarSumatoria
Varo = Varo + 1
End If
End If
Adodc6.Recordset.MoveNext
VarSumatoria = 0
Loop
Adodc6.Recordset.MoveFirst
L = L + 2
S = S + 2
Z = Z + 1
Next cor
ApExcel.Cells(17, L).Formula = "CANT"
ApExcel.Cells(17, S).Formula = "Vr,TOTAL"
ApExcel.Cells(16, L).Formula = "AVANCE TOTAL"
For i = 1 To Varo
ApExcel.Cells(i + 17 + ii, L).FormulaLocal = "=SUMA(G" & (i + 17) & "+I" & (i + 17) & ")"
ApExcel.Cells(i + 17 + ii, S).FormulaLocal = "=SUMA(H" & (i + 17) & "+j" & (i + 17) & ")"
Next i
i = Varo
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).HorizontalAlignment = xlCenter
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).VerticalAlignment = xlBottom
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).Orientation = 0
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).AddIndent = False
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).IndentLevel = 0
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).ShrinkToFit = False
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).ReadingOrder = xlContext
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).MergeCells = False
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).Interior.ColorIndex = 15
ApExcel.Range("A" & (i + 19) & ":N" & (i + 19)).Interior.Pattern = xlSolid
ApExcel.Cells(i + 19, 1).Formula = "VALOR TOTAL TRABAJOS PREDEFINIDOS:"
VarX1 = i + 19
ApExcel.Range("E18:F" & (i + 17)).NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
ApExcel.Range("H18:H" & (i + 17)).NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
ApExcel.Range("J18:J" & (i + 17)).NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Nebire:
Este códiigo vale perfectamente... aunque mejor si lo hubieras metido entre dos etiquetas de 'code', para que quedara convenientemente indentado y fuera cómodo de leer...
De entrada, tal que lo que dices el objeto ApExcel lo tienes definido a nivel de procedimiento y en tu caso conviene definirlo a nivel de formulario, supongamos que tu procedimiento se llamara TrabajarExcel ....
--- Código: Visual Basic --- ' Este es el código que tienes para definir el objetoprivate sub TrabajarExcel () Dim ApExcel As Excel.Application Set ApExcel = New Excel.Application ' ................. resto del códigoend Sub ' este es el código que debes usar' a nivel de formulario private ApExcel As Excel.Application private sub TrabajarExcel () Set ApExcel = New Excel.Application ' ................. resto del códigoend Sub
Ahora ya estando declarado el objeto a nivel de formulario lo podrás usar desde el resto de procedimientos que son llamados desde el que crea el objeto....
Fíjate, ahora de entrada ya vamos a meter en u´n procedimiento el formateo de las casillas
--- Código: Visual Basic --- private ApExcel As Excel.Application private sub TrabajarExcel () Din Varo as long ' declaración de otras variables locales que utiliza el procedimiento Set ApExcel = New Excel.Application If Not (ApExcel Is Nothing) Then ' crear el resto de objetos que necesitamos.... ' ... código ' .... código ' .... código Call FormatearCasillas Call CodigoMateriales(Varo) ' .... código ' .... código ' .... código Else Call MsgBox("Ocurrió algún propblema al intentar crear la instancia de Excel..." & vbCrLf & "Has agregado una referencia al proyecto ?... está instalado Excel ?", vbCritical + vbOKOnly, "No se puede continuar...") End Ifend Sub Private Sub FormatearCasillas() ApExcel.Range("A16:N17").Borders(xlEdgeBottom).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlEdgeBottom).Weight = xlThin ApExcel.Range("A16:N17").Borders(xlEdgeBottom).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlEdgeRight).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlEdgeRight).Weight = xlThin ApExcel.Range("A16:N17").Borders(xlEdgeRight).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlInsideVertical).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlInsideVertical).Weight = xlThin ApExcel.Range("A16:N17").Borders(xlInsideVertical).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).Weight = xlThin ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlDiagonalDown).LineStyle = xlNone ApExcel.Range("A16:N17").Borders(xlDiagonalUp).LineStyle = xlNone ApExcel.Range("A16:N17").Borders(xlEdgeLeft).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlEdgeLeft).Weight = xlMedium ApExcel.Range("A16:N17").Borders(xlEdgeLeft).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlEdgeTop).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlEdgeTop).Weight = xlMedium ApExcel.Range("A16:N17").Borders(xlEdgeTop).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlEdgeBottom).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlEdgeBottom).Weight = xlMedium ApExcel.Range("A16:N17").Borders(xlEdgeBottom).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlEdgeRight).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlEdgeRight).Weight = xlMedium ApExcel.Range("A16:N17").Borders(xlEdgeRight).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlInsideVertical).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlInsideVertical).Weight = xlThin ApExcel.Range("A16:N17").Borders(xlInsideVertical).ColorIndex = xlAutomatic ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).LineStyle = xlContinuous ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).Weight = xlThin ApExcel.Range("A16:N17").Borders(xlInsideHorizontal).ColorIndex = xlAutomatic ApExcel.Range("A1:F17").Font.Bold = TrueEnd Sub 'CODIGO DE MATERIALESPrivate Sub CodigoMateriales(ByVal Varo As Long) Dim VarSumatoria As Double Dim VarSumatoria2 As Double Dim indi As String Dim i As Long, l As Long, S As Long, Z As Long, ex As Long Dim cor As Long, Valorcorte As Long, VarStop As Long, VarCantCortes As Long Dim NumeroCorte2 As Long, VarIdCorte As Long i = 1 VarSumatoria = 0 VarSumatoria2 = 0 VarStop = 0 VarCantCortes = 0 NumeroCorte2 = FrmCrearCotizacion.ObtenerNumero(TxtDescripcionCorte6) NumeroCorte2 = NumeroCorte2 - 1 VarIdCorte1 = TxtIdCorte Varo = 0 l = 7 S = 8 Z = 18 ex = 1 For cor = 1 To Valorcorte indi = cor Limpiavec Z = 18 Adodc6.Recordset.MoveFirst Do While Not Adodc6.Recordset.EOF If TxtIdCotizacion6 = FrmCrearCotizacion.TxtIdCotizacion Then If ItenExiste6 = False Then VectorItemAvance(Varo) = TxtItem6 ApExcel.Cells(Varo + 18, 1).Formula = Val(TxtItem6) 'TxtItem6 ApExcel.Cells(Varo + 18, 2).Formula = TxtNOmbreItem6 'TxtNOmbreItem6 ApExcel.Cells(Varo + 18, 3).Formula = TxtUnidadItem6 'TxtUnidadItem6 ApExcel.Cells(Varo + 18, 4).Formula = TxtCantidadPresupuestada6 'cant ApExcel.Cells(Varo + 18, 5).Formula = Val(TxtVrInitItem6) 'Precio unitario ApExcel.Cells(Varo + 18, 6).Formula = TxtVrInitItem6 * TxtCantidadPresupuestada6 'Vr total If indi = ex Then ApExcel.Cells(17, l).Formula = "CANT" ApExcel.Cells(17, S).Formula = "Vr,TOTAL" ApExcel.Cells(16, l).Formula = "AVANCE " + indi 'Unir Celdas ApExcel.Range("G16:N16").HorizontalAlignment = xlCenter ApExcel.Range("G16:N16").VerticalAlignment = xlBottom ApExcel.Range("G16:N16").WrapText = False ApExcel.Range("G16:N16").Orientation = 0 ApExcel.Range("G16:N16").AddIndent = False ApExcel.Range("G16:N16").IndentLevel = 0 ApExcel.Range("G16:N16").ShrinkToFit = False ApExcel.Range("G16:N16").ReadingOrder = xlContext ApExcel.Range("G16:N16").MergeCells = False ApExcel.Range("G16:H16").Merge ApExcel.Range("I16:J16").Merge ApExcel.Range("K16:L16").Merge ApExcel.Range("M16:N16").Merge ex = ex + 1 End If Do While Not Adodc1.Recordset.EOF If TxtItem6 = TxtItem1 And TxtIdCotizacion1 = TxtIdCotizacion6 And TxtDescripcionCorte1 = "Corte No " + indi Then If FrmCrearCotizacion.FechaMayor(TxtFecIngresoCant1, TxtFechaInicio1) = True Then If FrmCrearCotizacion.FechaMayor(TxtFechaFin1, TxtFecIngresoCant1) = True Then VarSumatoria = TxtCantidadEjecutada1 + VarSumatoria 'cant eje End If End If End If Adodc1.Recordset.MoveNext Loop Adodc1.Recordset.MoveFirst ApExcel.Cells(Varo + Z, l).Formula = VarSumatoria 'cant eje ApExcel.Cells(Varo + Z, S).Formula = TxtVrInitItem6 * VarSumatoria 'Precio unitario SUMATOAVA = TxtVrInitItem6 * VarSumatoria Varo = Varo + 1 End If End If Adodc6.Recordset.MoveNext VarSumatoria = 0 Loop Adodc6.Recordset.MoveFirst l = l + 2 S = S + 2 Z = Z + 1 Next corEnd Sub
No es necesario que me extienda más... debe quedarte claro como se procede....
Simplemente se trata de cumplir el lema romano: 'Divide y vencerás'.
Toma líneas de código que realicen una labor concreta y crea un procedimiento que con el nombre que define esa labor, mueve esas líneas a dicho procedimiento. Como has creado código espagueti, tendrás un montón de variables en el procedimiento, las variables que refieren objetos de excel declaralos a nivel de formulario y las variables que se usan en muchos procedimientos también (por ejemplo la variable Adodc6), en cambio las variables que sólo se usen en un procedimiento las declaras locales (por ejemplo en el procedimiento 'CodigoMateriales', la variable 'cor' se refiere al bucle se declara y muere en el procedimiento la variable) también podemos pasar variables declaradas en un procedimiento a otro mediante parámetros (por ejemplo, si te fijas la variable 'Varo' está declarada en el procedimiento original y se la hemos pasado como parámetro al procedimiento 'CodigoMateriales')
Eso, si declara todas y cada una de las variables en el tipo que son, o de otro modo se asume que son variant y las variables variant consumen mucho más recursos y son más lentas
Naturalmente cada escisión del procedimiento debe ser suplantado por la llamada al correspondiente procedimiento que contiene las líneas que hemos movido...
La idea no es que tengas 8 procedimientos de 200 líneas sino tal vez 15 unos con 40 líneas y otros con 120 líneas... conviene que los separes de acuerdo a labores concretas, si las siguientes 80 líneas dan formato, pués creas un procedimiento llamado DarformatoA... y metes ahí el código que realiza esa labor, si luego tienes 30 líneas que leen datos de un archivo pues creas otro procedimiento llamado TomarDatosFicheroTemporal, mueves ahí elcódigo que realiza esa tarea y donde estaban colocas la llamada a dicho procedimiento y así sucesivamente. Si las líneas no las separas reunidas por tareas tendrás muchas variables compartidas entre diferentes procedimientos lo que te forzará a declararlas a nivel de formulario. en principio no hay nada malo en tener variables declaradas a nivel de formulario, simplemente que las variables declaradas a nivel de formulario utilizan memoria hasta que se destruye elformulario, las variables de un procedimiento (declaradas dentro de él) se descargan de memoria cuando se sale del procedimiento....
Si tienes dudas, ahora ya puedes hacer preguntas concretas...
joko1220:
bueno algunas cosa entiendo, otras cosa no entiendo. la verdad yo llevo como 3 meses trabajando en este lenguaje de programación. y las cosas que he aprendido han sido con manuales. te entiendo lo de los procedimiento lo de dividir por bloque que tenga parte especificas eso ok.
lo que no entiendo es esto, tu me dices que declare el objeto ApExcel a nivel de formulario la verdad, esta parte de reporte en Excel yo leí por medio de un manual como hacer eso me explicaba que por medio de macro de Excel sacar el código para poder pasarlo a visual basic 6 así fue que lo hice cuando tu me hablas de declarar el objecto ApExcel en el formulario principal me imagiano esto.
--- Código: Visual Basic ---Dim VectorItemAvance(1000) As IntegerDim VectorItemAvanceMO(1000) As IntegerDim VectorItemAvanceCR(1000) As IntegerDim VectorItemAvanceIA(1000) As IntegerDim Varo As IntegerDim VaroMO As IntegerDim TempMO As IntegerDim VaroCR As IntegerDim TempCR As IntegerDim VaroIA As IntegerDim TempIA As IntegerDim l As IntegerDim S As IntegerDim AvanceTMO As Integer Private Sub Form_Load()Dim VarVrTotalItem As DoubleDim VarPorEjecutado As Double'Dim Selection As Object'Dim xlGeneral As ObjectDim ContCantidad As Double'bExcel = False'Set ApExcel = GetObject(, "Excel.Application") 'Obtiene el objeto aplication de Excel, si no está abierto ocurre un error Set ApExcel = CreateObject("Excel.application")' Hace que Excel se vea'bExcel = TrueApExcel.Visible = True'Agrega un nuevo LibroApExcel.Workbooks.Add'Poner TitulosApExcel.Cells(2, 1).Formula = "INGESOFT LTDA - CARBONES DEL CERREJON LIMITED"'ApExcel.Cells(3, 1).Formula = "PROY:"'ApExcel.Cells(3, 2).Formula = FrmCrearCotizacion.TxtDescripcionCotizacion.TextApExcel.Cells(4, 1).Formula = "CUADRO DE CANTIDADES DE OBRA Y PRECIOS UNITARIOS"ApExcel.Cells(5, 1).Formula = "CONTRATO CON-002482007 - CONSTRUCCIÓN OBRAS ELECTRICAS Y SERVICIOS TÉCNICOS AFINES"ApExcel.Cells(6, 1).Formula = "TRABAJOS PREDEFINIDOS - TARIFAS POR PRECIOS UNITARIOS"ApExcel.Cells(7, 1).Formula = "CENTRO DE COSTO:"ApExcel.Cells(7, 3).Formula = FrmCrearCotizacion.TxtCentrodeCosto.TextApExcel.Cells(8, 1).Formula = "No. Orden de trabajo"ApExcel.Cells(8, 3).Formula = FrmCrearCotizacion.TxtNoCotizacionApExcel.Cells(8, 5).Formula = "Plazo:"ApExcel.Cells(8, 6).Formula = TxtDiasCalendario & " Dias "ApExcel.Cells(10, 1).Formula = "Objeto de la Orden:"ApExcel.Cells(10, 3).Formula = FrmCrearCotizacion.TxtDescripcionCotizacion.TextApExcel.Cells(11, 1).Formula = "Administrador de la orden de Trabajo:"ApExcel.Cells(11, 3).Formula = FrmCrearCotizacion.TxtNombreElaboraCotizacion.TextApExcel.Cells(12, 1).Formula = "Persona que elaboro la cotizacion:"ApExcel.Cells(12, 3).Formula = "RICARDO ANTURI"'ApExcel.Cells(4, 1).Formula = "COD:"'ApExcel.Cells(4, 2).Formula = "IELEC-CAMP"'ApExcel.Cells(4, 3).Formula = "FECHA:"'ApExcel.Cells(4, 4).Formula = FrmCrearCotizacion.TxtFechaCotizacion.TextApExcel.Columns("A:A").ColumnWidth = 8.43ApExcel.Columns("B:B").ColumnWidth = 33.57ApExcel.Columns("C:C").ColumnWidth = 8.29ApExcel.Columns("D:D").ColumnWidth = 9.71ApExcel.Columns("E:E").ColumnWidth = 15.14ApExcel.Columns("F:F").ColumnWidth = 17.57
donde Private Sub Form_Load() me imagino que es el formulario principal. corrigeme si me equivoco. si quiere dame un manual donde yo podria buscar esa información. la verdad se cual es tu idea pero la parte de declaración de formulario me confunde.
--- Código: Visual Basic ---'por que tu declaras por ejemplo Dim ApExcel As Excel.Application Set ApExcel = New Excel.Application 'y mi declaracion es asi Set ApExcel = CreateObject ("Excel.application") ' parece que me faltara estoDim ApExcel As Excel.Application ' Segun lo que observo
espero que CreateObject y New sean lo mismo.
de pronto estoy haciendo deducciones tonta pero la verdad tengo poco en este lenguaje espero me entiendas.
la verdad no se como no conosco casi el lenguaje
pero me has dado una idea de como pasar mas el codigo a procedimiento. por que el mio esta muy estructurado (osea que un solo bloque quiero hacer todo). y disculpa las molestias
ha ya aprendí lo de la etiquetas gracias XD
y gracias por tu ayuda de verdad. eres muy bueno en esto..
joko1220
Navegación
[#] Página Siguiente
Ir a la versión completa