Excel: 列幅を他のシートにコピーする方法

まず、コピー元のシートで下記のマクロを実行する。

Public Sub 列幅を取得()
    Dim nCol    As Long
    Dim I       As Long
    
    With ActiveSheet
        nCol = .UsedRange.Columns.Count
        For I = 1 To nCol
            With .Columns(I)
                Debug.Print "ActiveSheet.Range(""" & .Address & """).ColumnWidth =  " & .ColumnWidth
            End With
        Next
    End With
End Sub

すると、

ActiveSheet.Range("$A:$A").ColumnWidth =  2.29
ActiveSheet.Range("$B:$B").ColumnWidth =  2.14

という具合で、各列の列幅設定が VBA 化され、イミディエイトウィンドウに出力される。
で、コピー先のシートを開いた状態で、イミディエイトウィンドウに出力されたマクロを Enter 連打で実行すれば、列幅が設定される。
UsedRange 使ってるので、使ってない列はコピーされないけど。