[RESUELTO] sumar y restar los valores de columna D

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] sumar y restar los valores de columna D

Notapor physic » Dom Mar 24, 2019 10:38 pm

Saludos ,

en el archivo 1, las columnas K, L, P, están vinculadas al archivo 2 .

En la columna D de la hoja 1 del archivo 1, los valores se pegaron allí por otra macro, por lo que estos valores no tienen fórmulas. Ahora, para cambiarlos, sólo puedo hacer esto con Macro .

Necesito crear una Macro en el archivo 1 para Recalcular los valores de toda la columna D con el siguiente cálculo:
D2 = D2 - K2 + L2 + P2
D2 = 1 - 25 + 2 + 1
D2 = - 21 >>> debe ser igual a Cero porque el resultado fue menor que 2

D13 = D13 - K13 + L13 + P13
D13 = 12 - 36 + 13 + 12
D13 = 1 >>> debe ser igual a Cero porque el resultado fue menor que 2

D14 = D14 - K14 + L14 + P14
D14 = 13 - 37 + 14 + 13
D14 = 3 >>> restos el valor calculado, pues el resultado fue mayor que 2

observación:
1) adjunto al archivo 1 , tiene como ejemplo una hoja de cálculo 2 , con todos los valores recalculados para la columna D .

2) los resultados menores que 2 en la columna D , deben ser igual a Cero (0) .

3) los valores Recalculados para la columna D , necesita permanecer en la propia columna D .

4 ) Después de Recalculados los valores de toda la columna D en el archivo 1, la macro debe abrir el archivo 2 y eliminar los valores de las columnas E, H, M, de la línea 2 hacia abajo .
Adjuntos
file 1.ods
(19.11 KiB) 65 veces
file 2.ods
(13.22 KiB) 66 veces
Última edición por physic el Mié Mar 27, 2019 11:58 pm, editado 1 vez en total
LibreOffice 5.4.4.2 >>> Windows 7
physic
 
Mensajes: 85
Registrado: Lun Oct 29, 2018 12:55 am

Re: sumar y restar los valores de columna D

Notapor PepeOooSevilla » Mié Mar 27, 2019 8:08 am

Hola.

Copia y pega esta macro en "file 1.ods". En principio hace lo que necesitas. Ten en cuenta que debes cambiar la ruta "K:\file 2.ods" de la variable "RutaArchivoCalc2":

Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit

'La columna A es la 0
Const COL_D As Long = 3
Const COL_E As Long = 4
Const COL_H As Long = 7
Const COL_K As Long = 10
Const COL_L As Long = 11
Const COL_M As Long = 12
Const COL_P As Long = 15

Sub CalcularColumnaD()
   Dim ArchivoCalc1 As Object
   Dim ArchivoCalc2 As Object
   Dim RutaArchivoCalc2 As String
   Dim HojaActiva As Object
   Dim Fila As Long
   Dim Auxiliar As Variant
   Dim mArg()

   On Error GoTo TRATAR_ERROR
   
   ArchivoCalc1 = ThisComponent
   HojaActiva = ArchivoCalc1.getSheets().getByName("Planilha1")
   'Fila 2. La fila 1 es la 0
   Fila = 1
   With HojaActiva
      ' Mientras no esté vacía la columna D
      Do While .getCellByPosition(COL_D, Fila).getString() <> ""
         Auxiliar = .getCellByPosition(COL_D, Fila).getValue() - .getCellByPosition(COL_K, Fila).getValue() + _
               .getCellByPosition(COL_L, Fila).getValue() + .getCellByPosition(COL_P, Fila).getValue()
         If Auxiliar < 2 Then
            .getCellByPosition(COL_D, Fila).setValue(0)
         Else
            .getCellByPosition(COL_D, Fila).setValue(Auxiliar)
         End If
         Fila = Fila + 1
      Loop
   End With
   'Eliminar valores de determinadas celdas del archivo 2
   RutaArchivoCalc2 = ConvertToUrl("K:\file 2.ods")
   ArchivoCalc2 = StarDesktop.loadComponentFromURL(RutaArchivoCalc2, "_blank", 0, mArg())
   'Fila 2. La fila 1 es la 0
   Fila = 1
   With ArchivoCalc2.getSheets().getByName("Planilha1")
      Do While .getCellByPosition(COL_E, Fila).getString() <> ""
         .getCellByPosition(COL_E, Fila).clearContents(com.sun.star.sheet.CellFlags.VALUE)
         .getCellByPosition(COL_H, Fila).clearContents(com.sun.star.sheet.CellFlags.VALUE)
         .getCellByPosition(COL_M, Fila).clearContents(com.sun.star.sheet.CellFlags.VALUE)
         Fila = Fila + 1
      Loop
   End With
   MsgBox "Macro finalizada.", 64, "¡Atención!"
   Exit Sub
TRATAR_ERROR:
   MsgBox "Se ha producido un ERROR ...", 16, "¡Atención!"
End Sub

Saludos cordiales.
LibreOffice 6.1.5 en Windows 7 / 10
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1066
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

[Resuelto] sumar y restar los valores de columna D

Notapor physic » Mié Mar 27, 2019 11:51 pm

sr. PepeOooSevilla ,

muchas gracias , su Macro se quedó perfecta , funcionó muy bien . :bravo:
felicitaciones por su conocimiento . :bravo:

un enorme abrazo mi amigo . :) :super:
LibreOffice 5.4.4.2 >>> Windows 7
physic
 
Mensajes: 85
Registrado: Lun Oct 29, 2018 12:55 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron