使用命名范围和对象

时间:2016-06-22 12:37:26

标签: excel vba excel-vba

我需要将一系列单元格从一个工作簿复制到另一个工作簿。然而,遗憾的是,由于两个工作簿的大小,我不能同时打开它们。

所以我的想法是分两步完成:

1)打开workbook1将范围从一个工作簿保存到对象范围并关闭workbook1

2)打开workbook2将对象范围保存到工作簿中的范围

但这不起作用。有人可以帮助代码。谢谢。下面的示例代码

Dim Temp as Range
Workbooks.Open (Model1)
Workbooks(Model1).Activate
Temp = Range("First_Input").Value
Workbook(Model1).Close

Workbooks.Open(Model2)
Workbooks(Model2).Activiate
Range("Second_Input").Value = Temp.Value

1 个答案:

答案 0 :(得分:0)

以下工作示例:

  • 评论是嵌入式的,可以按原样运行(无需更改)。试试吧 工作簿首先是随机数据。
  • 该示例适用于已打开的工作簿,只需将其更改为"打开"工作簿。
  • 我在示例中使用了范围地址。你可以根据你想做的事情来玩这个。

以下作品应易于实施,复制并粘贴到Excel中。

Public Sub CopyData()


Dim wkb1 As Workbook
Dim wkb2 As Workbook
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim wkb1rng As Range
Dim wkb2rng As Range

'Point to Workbook and Sheet 1
'Set wkb1 = Workbooks.Open(Model1) ' To Open Workbook
Set wkb1 = Workbooks("Book1") ' If workbook is open already


'Sheets is the Index use String for the sheet name
Set sht1 = wkb1.Sheets(1)

' Dont need this if you moving objects directly in and out of memory.
' Workbooks(Model1).Activate

' Point to Range
Set wkb1rng = sht1.Range("First_Input")

' What is the address of the Range
Dim address As String
address = wkb1rng.Cells.address

'Point to Workbook and Sheet 2
Set wkb2 = Workbooks("Book2")

'Sheets is the Index use String for the sheet name
Set sht2 = wkb2.Sheets(1)

'I imagine Second_Input should be output?
'Use this only if the data range is exactly the same size
'Set wkb2rng = Range("Second_Output")
'else use this ...
Set wkb2rng = sht2.Range(address)

'Copy data across ...
wkb2rng.Value = wkb1rng.Value

End Sub