jueves, 21 de noviembre de 2013

Versiones de Excel.

Hace algunas semanas tuve que recordar un poco de historia de Excel, ya que tenía que controlar algunas rutinas en función a la versión de Excel con la que trabajaban diferentes usuarios. Asi que decidí explicar algunas formas de obtener el número de versión de Excel (y alguna otra información) y mostrar un ejemplo sencillo de como dirigir y controlar un proceso en VBA según la versión de trabajo.
Me centraré en las versiones para Windows, ya que las versiones MAC van por otro lado...


En primer lugar veremos la forma manual de conocer la versión de tu Excel.
Para ello accederemos, en Excel 2007, al botón de Office > Opciones de Excel > Recursos > Acerca de..., para más detalle pulsaremos el botón de Acerca de:
>p align="center">
Versiones de Excel.



Si trabajas en Excel 2010 busca esta información en el menú Archivo > Ayuda > Acerca de:

Versiones de Excel.



Recordaré ahora el historial de versiones de Excel para Windows:
Versión 2.0 = Excel 2 (1987)
Versión 3.0 = Excel 3 (1990)
Versión 4.0 = Excel 4 (1992)
Versión 5.0 = Excel 5 (1993)
Versión 7.0 = Excel 95
Versión 8.0 = Excel 97
Versión 9.0 = Excel 2000 (Office XP)
Versión 10.0 = Excel 2002
Versión 11.0 = Excel 2003
Versión 12.0 = Excel 2007
Versión 14.0 = Excel 2010
Versión 15.0 = Excel 2013


Para conocer nuestra versión y otros detalles, incluso del sistema, podemos aplicar una sencilla macro:

Sub Conocer_Version()
Dim Vers As String
'controlamos qué versión es la de nuestra aplicación Excel abierta..
Select Case Application.version
    Case "2.0": Vers = "Excel 2 (1987)"
    Case "3.0": Vers = "Excel 3 (1990)"
    Case "4.0": Vers = "Excel 4 (1992)"
    Case "5.0": Vers = "Excel 5 (1993)"
    Case "7.0": Vers = "Excel 95"
    Case "8.0": Vers = "Excel 97"
    Case "9.0": Vers = "Excel 2000 (Office XP)"
    Case "10.0": Vers = "Excel 2002"
    Case "11.0": Vers = "Excel 2003"
    Case "12.0": Vers = "Excel 2007"
    Case "14.0": Vers = "Excel 2010"
    Case "15.0": Vers = "Excel 2013"
    Case Else: Vers = "Otras versiones de Excel...."
End Select
'mostramos información
With Application
    MsgBox Vers & vbCr & "Versión:= " & .version & " Número de versión:= " & .Build & vbCr & _
                "Nombre y número de versión del sistema operativo actual:= " & .OperatingSystem
End With

End Sub



En mi caso este es el mensaje mostrado:

Versiones de Excel.



Para emplear y poder dirigir procedimientos en nuestras macros según la versión de trabajo del usuario podríamos emplear esa propiedad .version, pero como el valor devuelto es una cadena de texto, no olvidemos anidarlo dentro de una función VAL de VBA:

Sub SegunVersion()
'en este ejemplo controlo si la versión es anterior a Excel 2007
If Val(Application.version) < 12 Then
    MsgBox ".xls"
    Else
    MsgBox ".xlsx"
End If

End Sub

2 comentarios:

  1. TENGO UN PROBLEMA.

    TENGO ESTA MACROS QUE COPIA SEGUN CUMPLA CRITERIO LA CELDA Y ME COPIA 2 COLUMNAS EN CASO DE SER AFIRMATIVO, PERO QUIERO MODIFICARLA A QUE NO ME COPIE SOLO UNA CELDA ESPECIFICA SINO UNA FILA DELIMITADA COMO LO PUEDO HACER???

    ME PUEDES AYUDAR POR FAVOR..

    MANDO EL CÓDIGO

    Sub chequea()
    Application.ScreenUpdating = False
    Hoja2.Select
    i = 4
    For i = 4 To 67
    If Cells(i, 5).Value > 0 Then
    valor1 = Cells(i, 1)
    valor2 = Cells(i, 5)
    Hoja3.Select
    If Range("A6") <> "" Then
    Range("A100").End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell = valor1
    ActiveCell.Offset(0, 2) = valor2
    Hoja2.Select
    Else
    Range("A6").Select
    ActiveCell = valor1
    ActiveCell.Offset(0, 2) = valor2
    Hoja2.Select
    End If
    End If
    Next i
    Application.ScreenUpdating = True
    End Sub

    ResponderEliminar
    Respuestas
    1. Hola Yonatan,
      podrías emplear en lugar de Cells
      Rows(i &":"& i)

      Es complicado darte más pistas, pues no visualizo qué quieres copiar donde... y a qué filas te refieres.

      En el código veo que recorres la columna E de la fila 4 a 67, y en aquellos casos que el valor de la celda sea positivo, trasladas el valor de la celda Ax y Ex a la última celda libre de la hoja 3... pero se me escapa que fila querrías copiar.

      Espero mi indicación inicial te pueda orientar.
      Slds cordiales

      Eliminar