Programación General > Visual Basic 6.0 e inferiores

 error procedimiento demasiado largo

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa