vba Copy Paste Transpose Link
Review

Private Sub CopyPaste(rngSrc As Range, rngDest As Range)


Prefixing variables with their type is a bit dated.   Of course there are times when it is invaluable such as working with forms where their is a designer and a code module.  Using simple meaningful names will make you code easier to read.

Private Sub CopyPaste(Source As Range, Destination As Range)


There is no need to name temporary objects.

ActiveWorkbook.Sheets.Add.Name = &quot;_wsDummy_Temp_&quot;
Dim wsDummy As Worksheet
Set wsDummy = ActiveWorkbook.Sheets(&quot;_wsDummy_Temp_&quot;)


It better to set your variables directly whenever possible.

Set wsDummy = ActiveWorkbook.Sheets.Add


Since the worksheet is just temporary and the code is short, I would use a With block and eliminate the wsDummy variable altogether.

With ActiveWorkbook.Sheets.Add
    .Paste Link:=True
    &lt;more code&gt;
End With


Worksheets are activated with Range(&quot;A1&quot;) selected whenever they are added.  So eliminate these lines:

wsDummy.Activate
wsDummy.Range(&quot;A1&quot;).Select


Ay-ay-ay rngSrcSrcRng!!  This variable is just an alias for rngDummy`.   Pick a name and stick with it.   I take this concept to the extreme.  You will see the same names throughout all my code projects.
IMO, consistently using simple names like data ( array ), results ( array ), result (scalar value), r (row index) , c (column index), n (generic index), text ( simple string ), contents ( simple string usually file contents), source (source object such as a range) , destination (destination object such as a range), cell, target don't just make it easier to read and modify your code but it also makes it far quicker to write the code, in the first place.
vTransposed isn't needed either.  It would be better to reuse vSrcSrc then to keep both variables in memory.
Clearing the contents of a temporary worksheet.  I'm guessing this is a remnant of code from your earlier attempts.

rngDummy.ClearContents


After your macros complete Application.DisplayAlerts and Application.ScreenUpdating are automatically reset.  So these lines can be removed:

Application.DisplayAlerts = True
Application.ScreenUpdating = True


It is best to set Application.Calculation = xlCalculationManual when changing values or formulas on a worksheet.
Refactored Code
Private Sub CopyPaste(Source As Range, Destination As Range)
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim calculationMode As XlCalculation
    calculationMode = Application.Calculation
    
    Dim results As Variant

    Source.Copy
    With Worksheets.Add
        .Paste Link:=True
         With .Range(&quot;A1&quot;).CurrentRegion
            results = Application.ConvertFormula(.Formula, xlA1, xlA1, 1)
            Destination.Resize(.Columns.Count, .Rows.Count) = Application.Transpose(results)
        End With
        .Delete
    End With
    
    Application.Calculation = calculationMode
End Sub

Alternate Approach
A more efficient method create the formula array using Range.Address(RowAbsolute:=True, ColumnAbsolute:=True, External:=True).  This will eliminate the need for a temporary worksheet and avoid the copy and pasting.
 Private Sub TransposeLink(Source As Range, Destination As Range)
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Dim calculationMode As XlCalculation
    calculationMode = Application.Calculation
    
    Dim results As Variant
    With Source
        ReDim results(1 To .Columns.Count, 1 To .Rows.Count)
        
        Dim r As Long, c As Long
        
        For r = 1 To .Rows.Count
            For c = 1 To .Columns.Count
                    results(c, r) = &quot;=&quot; &amp; .Cells(r, c).Address(RowAbsolute:=True, ColumnAbsolute:=True, External:=True)
            Next
        Next
        
        Destination.Resize(.Columns.Count, .Rows.Count).Formula = results
    End With
    
    Application.Calculation = calculationMode
End Sub