Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As LongConst EM_FMTLINES = &HC8' Return an array with all the lines in the control.' If the second optional argument is True, the hard CR-LFs are preserved' (hard CR-LFs are those inserted by the user, soft CRLFs are those inserted' automatically to wrap long lines)Function TextBoxGetLines(tb As TextBox, Optional KeepHardLineBreaks As Boolean) _ As String() Dim result() As String Dim i As Long ' Activate soft line breaks. A soft line break is marked by the ' CR-Cr-LF sequence. SendMessage tb.hwnd, EM_FMTLINES, True, ByVal 0& ' Retrieve all the lines in one operation and split results. ' This operation will leave trailing CR character for soft line breaks only. result() = Split(tb.Text, vbCrLf) ' We need a loop to trim the trailing CR character. If the second ' argument is true, we need to manually add a CR-LF pair to all ' the lines that don't contain such trailing CR char. For i = 0 To UBound(result) If Right$(result(i), 1) = vbCr Then result(i) = Left$(result(i), Len(result(i)) - 1) ElseIf KeepHardLineBreaks Then result(i) = result(i) & vbCrLf End If Next ' Deactivate soft line breaks. SendMessage tb.hwnd, EM_FMTLINES, False, ByVal 0& TextBoxGetLines = result()End Function


What is Metadata?
What is metadata? Well, It’s an odd concept to wrap your head around. Metadata is essentially the secondary layer of data that tracks details about the “regular” data. The regular