Sub FormatTabletoCalcPad()
    Dim ws As Worksheet
    Dim selectedRange As Range
    Dim rowString As String
    Dim resultString As String
    Dim firstRow As Boolean
    Dim r As Long, c As Long
    Dim MSForms_DataObject As Object
    Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    
    ' Check if a range is selected
    Set selectedRange = Selection
    
    ' Validate selection
    If selectedRange Is Nothing Then
        MsgBox "Please select a range of cells first.", vbExclamation
        Exit Sub
    End If
    
    ' Initialize variables
    resultString = "["
    firstRow = True
    
    ' Iterate through rows
    For r = 1 To selectedRange.Rows.Count
        ' Add separator for subsequent rows
        If Not firstRow Then
            resultString = resultString & "|"
        Else
            firstRow = False
        End If
        
        ' Create row string
        rowString = ""
        For c = 1 To selectedRange.Columns.Count
            ' Add cell value to row string
            If rowString = "" Then
                rowString = CStr(selectedRange.Cells(r, c).Value)
            Else
                rowString = rowString & "; " & CStr(selectedRange.Cells(r, c).Value)
            End If
        Next c
        
        ' Add row string to result
        resultString = resultString & rowString
    Next r
    
    ' Close the result string
    resultString = resultString & "]"
    MSForms_DataObject.SetText resultString
    MSForms_DataObject.PutInClipboard
    Set MSForms_DataObject = Nothing
End Sub

Sub FormatTabletoCalcPadTransposed()
    Dim ws As Worksheet
    Dim selectedRange As Range
    Dim rowString As String
    Dim resultString As String
    Dim firstRow As Boolean
    Dim r As Long, c As Long
    Dim MSForms_DataObject As Object
    Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    
    ' Check if a range is selected
    Set selectedRange = Selection
    
    ' Validate selection
    If selectedRange Is Nothing Then
        MsgBox "Please select a range of cells first.", vbExclamation
        Exit Sub
    End If
    
    ' Initialize variables
    resultString = "["
    firstRow = True
    
    ' Iterate through rows
    For r = 1 To selectedRange.Rows.Count
        ' Add separator for subsequent rows
        If Not firstRow Then
            resultString = resultString & ";"
        Else
            firstRow = False
        End If
        
        ' Create row string
        rowString = ""
        For c = 1 To selectedRange.Columns.Count
            ' Add cell value to row string
            If rowString = "" Then
                rowString = CStr(selectedRange.Cells(r, c).Value)
            Else
                rowString = rowString & "| " & CStr(selectedRange.Cells(r, c).Value)
            End If
        Next c
        
        ' Add row string to result
        resultString = resultString & rowString
    Next r
    
    ' Close the result string
    resultString = resultString & "]"
    MSForms_DataObject.SetText resultString
    MSForms_DataObject.PutInClipboard
    Set MSForms_DataObject = Nothing
End Sub
