まず、コピー元のシートで下記のマクロを実行する。
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 使ってるので、使ってない列はコピーされないけど。