vba Copy Paste Transpose Link Following takes a range &amp; copies, pastes, transposes &amp; links.
There doesn't seem a way in vba to do this in 1 go that I've been able to find.
Questions are;

Is there a more efficient or safer way to do this. Keeping in mind;
-needing to do this for large ranges ie. over 100K cells. 
-source &amp; destination are in different worksheets or workbooks. So not the same worksheet.
What issues if any may exist &amp; how to safeguard.

Thank you

Sub Foo()

    'Example1
    Call CopyPaste(Sheet1.Range(&quot;C10:D20&quot;), Sheet2.Range(&quot;C1&quot;))
     
    'Example2
    Dim wbNew As Workbook
    Set wbNew = Workbooks.Add
    Call CopyPaste(ThisWorkbook.Sheets(1).Range(&quot;C10:D20&quot;), wbNew.Sheets(1).Range(&quot;C1&quot;))

End Sub

Sub CopyPaste(rngSrc As Range, rngDest As Range)
    
    Application.ScreenUpdating = False
    ActiveWorkbook.Sheets.Add.Name = &quot;_wsDummy_Temp_&quot;
    Dim wsDummy As Worksheet
    Set wsDummy = ActiveWorkbook.Sheets(&quot;_wsDummy_Temp_&quot;)   

    rngSrc.Copy
    wsDummy.Activate
    wsDummy.Range(&quot;A1&quot;).Select
    ActiveSheet.Paste Link:=True
    
    Dim vTransposed As Variant
    Dim rngSrcSrcRng As Range
    Dim vSrcSrc As Variant
    
    Dim rngDummy As Range
    Set rngDummy = wsDummy.Range(&quot;A1&quot;)
    Set rngDummy = rngDummy.Resize(rngSrc.Rows.Count, rngSrc.Columns.Count)
    rngDummy.Formula = Application.ConvertFormula(rngDummy.Formula, xlA1, xlA1, 1)
    
    Set rngSrcSrcRng = rngDummy
    vSrcSrc = rngSrcSrcRng.Formula
    vTransposed = Application.Transpose(vSrcSrc)
    
    Set rngDest = rngDest.Resize(rngDummy.Columns.Count, rngDummy.Rows.Count)
    rngDest.Formula = vTransposed

    rngDummy.ClearContents
    Application.DisplayAlerts = False
    wsDummy.Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub


EDIT:
With the answer provided @TinMan I decided to fill over a 1M cells in a worksheet with numbers &amp; do some benchmarking.
Original OP function: 33 to 39 seconds. 
Refactored CopyPaste function: 20 to 26 seconds. 
Alternate Approach TransposeLink function: 11 to 13 seconds. 
It appears the last one is the fastest in the tests I did but also removes the need to use another temporary worksheet, removes need to use select or the clipboard.
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