我想打开一个工作簿,然后将一列并排复制到另一个工作簿(每个文件的列彼此相邻)。
但是我不想更改单元格引用(即,如果复制范围中的引用是C15:C17我不希望它移动)。我怎么能接近这个?
目前我正在使用以下代码:
Sub dane_wolne()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
Application.Calculation = xlManual
Wiersz2 = 20
For i = 1 To Wiersz2
Workbooks.Open FileName:=Katalog & "U" & i & ".xlsx", ReadOnly:=True
Range("D11:D210").Copy
ThisWorkbook.Worksheets("Obliczenia").Range("E11:E210").Offset(0, i).PasteSpecial xlPasteFormulas
Workbooks("U" & i & ".xlsx").Close
Next i
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub
答案 0 :(得分:3)
您可以使用:
ThisWorkbook.Worksheets("Obliczenia").Range("E11:E210").Offset(0, i).Formula = Range("D11:D210").Formula
在单独的步骤中复制格式。
将ThisWorkbook.Worksheets("Obliczenia").Range("E11:E210")
范围变量设为一次,然后仅应用.Offset
使代码更清晰,更快(纳秒:) :)
Aslo,将新打开的工作簿设置为变量是一种很好的做法,以使其更加明确和可靠。例如:Set SourceWB = Workbooks.Open FileName:=Katalog & "U" & i & ".xlsx", ReadOnly:=True
(并非总是必要的。)
然后使用SourceWB.Range("D11:D210")