VBA Functions

VBA Functions

Convert string to date

Function ConvertStringToDate(dateString As String) As Date
    Dim parts() As String
    parts = Split(dateString, ".")
    If UBound(parts) = 2 Then
        ' parts(0) = day, parts(1) = month, parts(2) = year
        ConvertStringToDate = DateSerial(CInt(parts(2)), CInt(parts(1)), CInt(parts(0)))
    Else
        Err.Raise vbObjectError + 1, , "Invalid date format."
    End If
End Function

เคฏเคน VBA function ConvertStringToDate, Excel เคฏा Word เคฎें เค•िเคธी text date (เคœैเคธे "25.12.2025") เค•ो real Date value เคฎें convert เค•เคฐเคคा เคนै।

เคฏเคน เค‡เคธ เคช्เคฐเค•ाเคฐ เค•ाเคฎ เค•เคฐเคคा เคนै:

  1. เคฏเคน function, Split(dateString, ".") เค•े เคธाเคฅ dot (.) เค•ो separator เค•े เคฐूเคช เคฎें เค‰เคชเคฏोเค— เค•เคฐเค•े input text เค•ो separate เค•เคฐเคคा เคนै।
  2. เคฏเคน เคคीเคจ เคญाเค—ों เค•ो expect เค•เคฐเคคा เคนै: day, month เค”เคฐ year
  3. เคฏเคฆि format เคธเคนी เคนै, เคคो เคฏเคน เค‡เคจ parts เคธे เคเค• valid date เคฌเคจाเคจे เค•े เคฒिเค DateSerial เค•ा เค‰เคชเคฏोเค— เค•เคฐเคคा เคนै।
  4. เคฏเคฆि format เค—เคฒเคค เคนै (เคคीเคจ parts เคจเคนीं), เคคो เคฏเคน "Invalid date format" เคตाเคฒा เคเค• error message raise เค•เคฐเคคा เคนै।

เคฏเคน เค‰เคšिเคค date conversion เค”เคฐ validation เคธुเคจिเคถ्เคšिเคค เค•เคฐเคคा เคนै।


Remove Duplicate

Function RemoveDuplicates(arr As Variant) As Variant
    Dim dict As Object
    Dim item As Variant
    Dim result() As Variant
    Dim i As Long
    Set dict = CreateObject("Scripting.Dictionary")    
    ' Add unique items to dictionary
    On Error Resume Next
    For Each item In arr
        If Not dict.exists(item) Then
            dict.Add item, Nothing
        End If
    Next item
    On Error GoTo 0    
    ' Transfer dictionary keys to result array
    ReDim result(1 To dict.Count)   'ReDim result(0 To dict.Count-1)
    i = 1                           'i=0
    For Each item In dict.Keys
        result(i) = item
        i = i + 1
    Next item
    RemoveDuplicates = result
End Function

เคฏเคน VBA fuction RemoveDuplicates เค•िเคธी array เคธे duplicate values เค•ो เคนเคŸाเคคा เคนै।

เคฏเคน เค‡เคธ เคช्เคฐเค•ाเคฐ เค•ाเคฎ เค•เคฐเคคा เคนै:

  1. เคฏเคน เคเค• dictionary object เคฌเคจाเคคा เคนै, เคœो เค•ेเคตเคฒ unique keys store เค•เคฐเคคा เคนै।
  2. Cod input array arr เคฎें เคช्เคฐเคค्เคฏेเค• item เค•े เคฎाเคง्เคฏเคฎ เคธे loop เค•เคฐเคคा เคนै।
  3. เคฏเคฆि เค•ोเคˆ item เคชเคนเคฒे เคธे dictionary เคฎें เคจเคนीं เคนै, เคคो เคฏเคน เค‰เคธे เคœोเคก़ เคฆेเคคा เคนै। เค‡เคธเคธे duplicate automatic เคฐूเคช เคธे เคนเคŸ เคœाเคคे เคนैं।
  4. เคธเคญी unique items เคเค•เคค्เคฐ เค•เคฐเคจे เค•े เคฌाเคฆ, เคฏเคน dictionary keys (unique values) เค•ो result เคจाเคฎเค• เคเค• เคจเคˆ array เคฎें copy เค•เคฐเคคा เคนै।
  5. เค…ंเคค เคฎें, เคฏเคน เค•ेเคตเคฒ unique items เคตाเคฒी เคฏเคน result array เคฒौเคŸाเคคा เคนै।

เคฏเคน function VBA เคฎें duplicate data เค•ो เคธाเคซ़ เค•เคฐเคจे เค•े เคฒिเค เค‰เคชเคฏोเค—ी เคนै।


Get user ID

Public Function UserID()
    UserID = Environ$("UserName")
End Function

เคฏเคน VBA function UserID, code เคšเคฒाเคจे เคตाเคฒे เคต्เคฏเค•्เคคि เค•ा current Windows username เคฒौเคŸाเคคा เคนै।

เคฏเคน เค‡เคธ เคช्เคฐเค•ाเคฐ เค•ाเคฎ เค•เคฐเคคा เคนै:

  • เคฏเคน function Environ$ command เค•ा เค‰เคชเคฏोเค— เค•เคฐเคคा เคนै, เคœो computer เค•े environment variables เคธे เคœाเคจเค•ाเคฐी เคช्เคฐाเคช्เคค เค•เคฐเคคा เคนै।
  • "UserName" เคเค• เคเคธा environment variable เคนै เคœो logged-in user เค•ा เคจाเคฎ store เค•เคฐเคคा เคนै।
  • เคœเคฌ function เคšเคฒเคคा เคนै, เคคो เคฏเคน UserID เค•ो username value assign เค•เคฐเคคा เคนै เค”เคฐ เค‰เคธे function result เค•े เคฐूเคช เคฎें เคฒौเคŸाเคคा เคนै।

เค‰เคฆाเคนเคฐเคฃ เค•े เคฒिเค, เคฏเคฆि เค†เคชเค•ा Windows username Ram เคนै, เคคो function Ram เคฒौเคŸाเคเค—ा। เคฏเคน users เค•ो track เค•เคฐเคจे เคฏा Excel เคฏा Word VBA เคฎें report เค•ो customize เค•เคฐเคจे เค•े เคฒिเค เค‰เคชเคฏोเค—ी เคนै।


Get user Name

Public Function UserName()
    UserName = Application.UserName
End Function

เคฏเคน VBA function UserName, Microsoft Office application เคฎें set เค•िเค เค—เค person เค•ा name เคฒौเคŸाเคคा เคนै।

เคฏเคน เค‡เคธ เคช्เคฐเค•ाเคฐ เค•ाเคฎ เค•เคฐเคคा เคนै:

  • เคฏเคน function Application.UserName เค•ा เค‰เคชเคฏोเค— เค•เคฐเคคा เคนै, เคœो Office user settings (เค†เคฎเคคौเคฐ เคชเคฐ File → Option → General → User Name เค•े เค…ंเคคเคฐ्เค—เคค) เคฎें enter เค•िเค เค—เค name เค•ो retrieve เค•เคฐเคคा เคนै।
  • เคœเคฌ function เคšเคฒเคคा เคนै, เคคो เคฏเคน UserName เค•ो เคฏเคน name assign เค•เคฐเคคा เคนै เค”เคฐ เค‰เคธे เคฒौเคŸाเคคा เคนै।

เค‰เคฆाเคนเคฐเคฃ เค•े เคฒिเค, เคฏเคฆि Excel user name Ram เคชเคฐ set เคนै, เคคो function Ram เคฒौเคŸाเคเค—ा।

เคฏเคน document creator เค•ी เคชเคนเคšाเคจ เค•เคฐเคจे เคฏा Excel เคฏा Word report เคฎें personalize details เคœोเคก़เคจे เค•े เคฒिเค เค‰เคชเคฏोเค—ी เคนै।


Get Outlook properties like mobile number, email etc.

Function ResolveDisplayNameToSMTP(sFromName) As String
    ' takes a Display Name (i.e. "Ram Kumar") and turns it into an email address (ram.kumar@myco.com)
    ' necessary because the Outlook address is a long, convoluted string when the email is going to someone in the organization.
    ' source:  https://stackoverflow.com/questions/31161726/creating-a-check-names-button-in-excel
    Dim olApp As Object 'Outlook.Application
'    Dim myNamespace As Outlook.Namespace
'    Dim oRecip As Outlook.Recipient
    Dim oRecip As Object 'Outlook.Recipient
    Dim oEU As Object 'Outlook.ExchangeUser
    'Dim oEDL As Object 'Outlook.ExchangeDistributionList
    
    Set olApp = CreateObject("Outlook.Application")
    Set oRecip = olApp.Session.CreateRecipient(sFromName)
    
'    Set myNamespace = Application.GetNamespace("MAPI")
'    Set oRecip = myNamespace.CreateRecipient(sFromName)
    
    oRecip.Resolve
    'Sleep 1000
        If Not oRecip.Resolved Then
            oRecip.Resolve
        End If
    If oRecip.Resolved Then
        Select Case oRecip.AddressEntry.AddressEntryUserType
            Case 0, 5 'olExchangeUserAddressEntry & olExchangeRemoteUserAddressEntry
                Set oEU = oRecip.AddressEntry.GetExchangeUser
                If Not (oEU Is Nothing) Then
                    'ResolveDisplayNameToSMTP = oEU.PrimarySmtpAddress 'for email
                    'ResolveDisplayNameToSMTP = oEU.MobileTelephoneNumber ' for mobile number
                    ResolveDisplayNameToSMTP = oEU.Name 'for name
                End If
            Case 10, 30 'olOutlookContactAddressEntry & 'olSmtpAddressEntry
                    'ResolveDisplayNameToSMTP = oRecip.AddressEntry.Address
                    ResolveDisplayNameToSMTP = oRecip.AddressEntry.Address
        End Select
    End If
'Sleep 2000
    'Set olApp = Nothing
    'Set oRecip = Nothing
    Set oEU = Nothing
    Set oRecip = Nothing
    Set olApp = Nothing
    
End Function

เคฏเคน VBA function ResolveDisplayNameToSMTP, เค•िเคธी Outlook display name (เคœैเคธे "Ram Kumar") เค•ो เค•िเคธी เค…เคงिเค• เค‰เคชเคฏोเค—ी เคฐूเคช เคฎें เคชเคฐिเคตเคฐ्เคคिเคค เค•เคฐเคคा เคนै, เคœैเคธे เค•ि email address, mobile number เคฏा name

เคฏเคน เค‡เคธ เคช्เคฐเค•ाเคฐ เค•ाเคฎ เค•เคฐเคคा เคนै:

  1. เคฏเคน CreateObject("Outlook.Application") เค•ा เค‰เคชเคฏोเค— เค•เคฐเค•े Outlook เคธे connect เคนोเคคा เคนै।
  2. เคฏเคน เคฆिเค เค—เค เคจाเคฎ เค•े เคฒिเค เคเค• recipient object เคฌเคจाเคคा เคนै เค”เคฐ เค‰เคธे Outlook เค•ी address book เคฎें resolve เค•เคฐเคจे เค•ा เคช्เคฐเคฏाเคธ เค•เคฐเคคा เคนै।
  3. เคธเคซเคฒ เคนोเคจे เคชเคฐ, เคฏเคน address entry เค•े type เค•ी เคœाँเคš เค•เคฐเคคा เคนै।
  4. Internal users เค•े เคฒिเค, เคฏเคน primary SMTP email, mobile number เคฏा display name (เคฌिเคจा comment เค•ी เค—เคˆ lines เค•े เค†เคงाเคฐ เคชเคฐ) เคฒौเคŸा เคธเค•เคคा เคนै।
  5. เค‡เคธเค•े เคฌाเคฆ เคฏเคน เคธเคญी Outlook object เค•ो memory free เค•เคฐเคจे เค•े เคฒिเค release เค•เคฐ เคฆेเคคा เคนै।

เคฏเคน function Outlook เคฎें names เคธे users เค•े true email addresses เค•ी เคชเคนเคšाเคจ เค•เคฐเคจे เคฎें เคฎเคฆเคฆ เค•เคฐเคคा เคนै।

เคเค• เคŸिเคช्เคชเคฃी เคญेเคœें

0 เคŸिเคช्เคชเคฃिเคฏाँ