Sub foo2()
Dim x As Workbook
Dim y As Workbook
'## Open both workbooks first:
Set x = Workbooks.Open("pathoffile.xlsx")
Set y = Workbooks.Open("pathoffile.xlsm")
'Now, transfer values from x to y:
y.Sheets("Main").Range("AH5:AH994").Value = x.Sheets("Database").Range("B2:B991")
'Close x:
x.Close
End Sub
我的代码如下。我正在尝试从一个工作簿复制一系列数据并将其放置到另一个工作簿上。我无法在一系列数据上使用它。例如,如果我为工作表y提供范围AH5:AH994,为工作表x提供范围B2,它将运行并使用来自B2的数据填充该范围。如果它们的大小相同,是否有可能占领整个范围B2:B991并将其复制到AH5:AH994?
答案 0 :(得分:0)
x.Sheets("Database").Range("B2:B991").Copy Destination:=y.Sheets("Main").Range("AH5:AH994")
或者如果您只想要值:
x.Sheets("Database").Range("B2:B991").Copy
y.Sheets("Main").Range("AH5:AH994").PasteSpecial(xlPasteValues)
但价值转移应该有效,并避免使用剪贴板:
y.Sheets("Main").Range("AH5:AH994").Value = x.Sheets("Database").Range("B2:B991").Value
答案 1 :(得分:0)
设置
B
从第二行开始(单元格B2
)。行数将在运行时计算。AH5
中开始的列范围。结果
计算后例如sRng = .Range("B2:B5")
,tCell = .Range("AH5")
的值可以像这样复制:
tCell.Resize(sRng.Rows.Count).Value = sRng.Value
代码
Option Explicit
Sub ValuesFromRangeToFirstCell()
Const sFirstCell As String = "B2"
Const tFirstCell As String = "AH5"
Dim src As Workbook
Set src = Workbooks.Open("pathoffile.xlsx")
With src.Sheets("Database")
' Define Source Column Number.
Dim sColumn As Long
sColumn = .Range(sFirstCell).Column
' Define Source Last Row Number.
Dim sLastRow As Long
sLastRow = .Cells(.Rows.Count, sColumn).End(xlUp).Row
' Define Source Column Range.
Dim sRng As Range
Set sRng = .Range(sFirstCell, .Cells(sLastRow, sColumn))
End With
Dim tgt As Workbook
Set tgt = Workbooks.Open("pathoffile.xlsm")
With tgt.Sheets("Main")
' Define Target First Cell Range.
Dim tCell As Range
Set tCell = .Range(tFirstCell)
End With
' Copy values from Source Column Range to Target Column Range.
tCell.Resize(sRng.Rows.Count).Value = sRng.Value
src.Close
End Sub