/vba

proyectos con el software MSE

Primary LanguageVBA

Visual Basic for Applications

Proyectos realizados con el lenguaje vba, el cual viene integrado en la aplicaciones de office.

Recursos

Selenium

Instalación

Información

🌍

🎬

Ribbon

Ribbon y Backstage

Información

🎬

Proyectos

  • 👇Ripley Puntos: Sirve obtener la información de los productos que puedes obtener con tus puntos ripley.

Funciones

Guardar texto

Private Function saveString(textToSave$)
    Dim filePath As String
    Dim fileNumber As Integer

    filePath = "[RUTA_DEL_ARCHIVO]"
    fileNumber = FreeFile
    Open filePath For Output As #fileNumber
    Print #fileNumber, textToSave
    Close #fileNumber

    MsgBox "Archivo guardado correctamente."
End Function

Generar un Status Bar

Private Function BarraDeProgreso()
    Dim i As Long
    Dim max As Long

    max = 100

    For i = 1 To max
        Application.StatusBar = "Progreso: [" & _
        String(i, ChrW(9608)) & String(max - i, " ") & "] " & _
        Format(i / max, "0%")
        Application.Wait Now + TimeValue("0:00:01")
    Next i

    Application.StatusBar = False
End Function

Mover el archivo mas reciente según su extensión y opcionalmente renombrarlo.

' Referencia: Microsoft Scripting Runtime
' Info From: https://www.automateexcel.com/vba/move-files/

Private Function MoveFiles( _
    FromPath As String _
    , ToPath As String _
    , FileExt As String _
    , Optional NewName As String = "") As Boolean

    Dim fso As Scripting.FileSystemObject
    Dim FileInFromFolder As Object
    Dim fechaMasReciente As Date
    Dim FromFile As String

    Set fso = New Scripting.FileSystemObject
    fechaMasReciente = DateValue("01/01/1900")

    If ToPath = "" Then
        MsgBox "Debe ingresar una dirección de una carpeta valida"
        MoveFiles = False
        Exit Function
    End If

    ' Crea una carpeta en caso de que esta no exista
    If Not fso.FolderExists(ToPath) Then
        fso.CreateFolder ToPath
    End If

    ' Determina el archivo mas reciente
    For Each FileInFromFolder In fso.GetFolder(FromPath).Files
        If LCase(Right(FileInFromFolder.Name, 4)) = FileExt Then
            If fechaMasReciente < FileInFromFolder.DateLastModified Then
                FromFile = FileInFromFolder.path
                fechaMasReciente = FileInFromFolder.DateLastModified
            End If
        End If
    Next FileInFromFolder

    ' Mueve el archivo en caso este exista
    If fso.FileExists(FromFile) Then
        If NewName <> "" Then
            Name FromFile As ToPath & "\" & NewName & FileExt
        Else:
            fso.MoveFile _
                Source:=FromFile, _
                Destination:=ToPath
        End If
    End If

    Set fso = Nothing
    MoveFiles = True

End Function

Cargar variables de archivos DotEnv

' Referencia: Microsoft Scripting Runtime

Dim FSO As FileSystemObject
Dim envDict As Scripting.Dictionary

Public Sub LoadEnv()

    'Initialize FileSystemobject and Dictionary objects
    Set FSO = New FileSystemObject
    Set envDict = New Scripting.Dictionary

    'Define path to .env file
    Dim envPath As String
    envPath = ThisWorkbook.Path & "\.env"

    'Check if .env file exists
    If Not FSO.FileExists(envPath) Then
        MsgBox "Could not find .env file"
        Exit Sub
    End If

    'Read .env file and add variables to dictionary
    Dim envFile As TextStream
    Set envFile = FSO.OpenTextFile(envPath, ForReading)
    Do Until envFile.AtEndOfStream
        Dim line As String
        line = envFile.ReadLine
        If InStr(line, "=") > 0 Then
            Dim parts() As String
            parts = Split(line, "=")
            'Delete single and doubles quotes
            envDict(parts(0)) = Replace(Replace(parts(1), "'", ""), """", "")
        End If
    Loop
    envFile.Close
End Sub

'Get value of environment variable
Private Function GetEnv(key As String) As Variant
    If envDict.Exists(key) Then
        GetEnv = envDict(key)
    Else
        GetEnv = Null
    End If
End Function

Regex

Info from:

Propiedades

  • Pattern: El patrón que va a utilizar para comparar con la cadena.
  • IgnoreCase: Si es True, entonces la coincidencia ignora las mayúsculas y minúsculas.
  • Global: Si es True, entonces se encuentran todas las coincidencias del patrón en la cadena. Si es Falso, sólo se encuentra la primera coincidencia.
  • MultiLine: Si es Verdadero, la coincidencia del patrón ocurre a través de los saltos de línea.

Métodos

  • Test: Busca un patrón en una cadena y devuelve True si se encuentra una coincidencia.
  • Replace: Reemplaza las ocurrencias del patrón con la cadena de reemplazo.
  • Execute: Devuelve las coincidencias del patrón con la cadena.
' Referencia: Microsoft VBScript Regular Expressions 5.5

Public Sub Regex()

    Dim texto as String
    Dim exp as Object

    Set exp = New RegExp
    exp.Pattern = ""
    texto = ""

    ' Test: Busca un patrón en una cadena y devuelve True si se encuentra.
    Debug.Print exp.Test(texto)

    ' Replace: Reemplaza las ocurrencias del patrón con la cadena de reemplazo.
    Dim newTexto  as String

    exp.Global = False '
    Debug.Print exp.Replace(texto, newTexto)

    ' Execute: Devuelve las coincidencias del patrón con la cadena.
    Dim Coincidencias as object
    Dim Coincidencia as object

    exp.Global = False
    exp.IgnoreCase = False

    For Each coincidencia In coincidencias
        Debug.Print coincidencia.Value
    Next

End Sub

Ejecuciones por consola

  • Crea un libro de trabajo habilitado para macros
start excel /m

🖱Más comandos