将数据从另一个工作簿复制到活动单元格

时间:2021-02-04 07:38:46

标签: excel vba

我需要更改我的代码,以便从另一个文件复制的选择粘贴到打开的工作簿中的活动单元格:


Sub Get_Data_From_File()
`Dim FiletoOpen As Variant
Dim OpenBook As Workbook
Application.ScreenUpdating = False

FiletoOpen = Application.GetOpenFilename(Title:="Browse for your file & Import Range", FileFilter:="Excel Files(*.xlsx),*xlsx*")

If FiletoOpen <> False Then

Set OpenBook = Application.Workbooks.Open(FiletoOpen)
OpenBook.Sheets(1).Range("D1:D100").Copy
ThisWorkbook.Worksheets("Sheet1").ActiveCell.PasteSpecial xlPasteValues
OpenBook.Close False
End If

Application.ScreenUpdating = True


End Sub


我试图改变这一行: ThisWorkbook.Worksheets("Sheet1").ActiveCell.PasteSpecial xlPasteValues

ActiveCell.PasteSpecial xlPasteValues

此外,我尝试定义一个范围,如本例所示: ThisWorkbook.Worksheets("Sheet1").Range("J4").PasteSpecial xlPasteValues

这是有效的。但是,我不想复制到该范围,而是复制到我打开的工作簿中的活动选定单元格。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

ActiveCell 是应用程序的一个属性,而不是一个工作表,这就是为什么您不能像最初编写的那样访问它。我正在试验您的代码,看起来当打开工作表时,ActiveCell 变为打开的工作表的 A1

那么像这样的事情怎么样:

' ++ make a note of current active cell before opening file
Dim r As Range
Set r = ActiveCell


FiletoOpen = Application.GetOpenFilename(Title:="Browse for your file & Import Range", FileFilter:="Excel Files(*.xlsx),*xlsx*")

...

'-- ThisWorkbook.Worksheets("Sheet1").ActiveCell.PasteSpecial xlPasteValues
'++ Copy to saved range
r.PasteSpecial xlPasteValues

完整的子:

Option Explicit

Sub Get_Data_From_File()
Dim FiletoOpen As Variant
Dim OpenBook As Workbook
Application.ScreenUpdating = False

' ++ make a note of current active cell before opening file
Dim r As Range
Set r = ActiveCell


FiletoOpen = Application.GetOpenFilename(Title:="Browse for your file & Import Range", FileFilter:="Excel Files(*.xlsx),*xlsx*")

If FiletoOpen <> False Then

Set OpenBook = Application.Workbooks.Open(FiletoOpen)
OpenBook.Sheets(1).Range("D1:D100").Copy

'-- ThisWorkbook.Worksheets("Sheet1").ActiveCell.PasteSpecial xlPasteValues
'++ Copy to saved range
r.PasteSpecial xlPasteValues

OpenBook.Close False
End If

Application.ScreenUpdating = True


End Sub