我需要更改我的代码,以便从另一个文件复制的选择粘贴到打开的工作簿中的活动单元格:
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
这是有效的。但是,我不想复制到该范围,而是复制到我打开的工作簿中的活动选定单元格。
有什么建议吗?
答案 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