2016-07-18 46 views
0

这是我第一次尝试在工作中编写宏,所以如果这非常简单,我无法在网上找到解决方案并且一直出错在我的代码:如何在不同的工作簿之间切换以复制/粘贴信息

基本上,我有一个原始数据文件,我想复制不同的过滤数据到一个新的工作簿。我已经通过将M列复制到新创建的工作簿中的部分,但我不知道如何使代码返回到原始数据文件并复制另一列,然后将其粘贴到同一新工作簿中的另一列中。

下面是我到目前为止,'''的行是我尝试过,并得到错误。不知道为什么它不工作

Dim FilePath As String 
Dim SourceFile As String 

Sub Reconcile() 

FilePath = Sheets("Reconcile").Range("E5")  'location of saved attachment 
If Right(FilePath, 1) <> "\" Then FilePath = FilePath & "\" 

SourceFile = Sheets("Reconcile").Range("E7") 'name of attachment file 

FilePath = FilePath & SourceFile 

Application.DisplayAlerts = False 
Application.ScreenUpdating = False 

Workbooks.Open Filename:=FilePath, UpdateLinks:=False 'open sourcefile  workbook 
ActiveWorkbook.CheckCompatibility = False 

'''Set DataFile = Workbooks(ActiveWorkbook.Name) 'activeworkbook is the raw data file 

'Copy the date column into a new wb and remove duplicates 
    Columns("M:M").Select 
    Selection.Copy 
    Workbooks.Add 
    ActiveSheet.Paste 
    Application.CutCopyMode = False 
    ActiveSheet.Range("$A$1:$A$1666").RemoveDuplicates Columns:=1, Header:=xlNo 
    Rows(1).Delete 

'''DataFile.Sheets("Sheet1").Range("A1").Select 


End Sub 

最后一行就是我试图回到原始数据文件,并选择单元格A1。

谢谢!

回答

1

通过创建一个工作表对象和几个工作簿的启动关闭对象

Dim wsReconcile As Worksheet 
Dim wbDatafile As Workbook 
Dim wbNewfile As Workbook 

然后,在你的代码的开始,你打开任何新的工作簿之前设置wsReconcile您对账表

Set wsReconcile = Worksheets("Reconcile") 

然后,当您执行WorkBooks.Open数据文件时,可以将其分配给wbDatafile对象

Set wbDatafile = Workbooks.Open(Filename:=FilePath, UpdateLinks:=False) 'open sourcefile  workbook 

而且,当你添加新的工作簿,将其分配给wbNewfile对象

Set wbNewfile = Workbooks.Add 

然后,每次你需要参考的数据文件时,使用wbDatafile对象,例如

wbDatafile.Sheets("Sheet1").Range("A1").Select 

每次需要引用新文件时,请使用wbNewfile对象,例如,

wbNewfile.Sheets("Sheet1").Range("$A$1:$A$1666").RemoveDuplicates Columns:=1, Header:=xlNo 
wbNewfile.Sheets("Sheet1").Rows(1).Delete 

而且,当您要引用原始协调表时,可以使用wsReconcile对象,例如,

SourceFile = wsReconcile.Range("E7") 
+0

“设置wbDatafile = Workbooks.Open名:=文件路径,UpdateLinks:=假“打开的资源文件”这一行并没有为我工作,但我得到了使用“设置wbDatafile =工作簿相同的结果(ActiveWorkbook.Name )“ 非常感谢您如此清晰地解释您的步骤!我真的很感激 –

+0

@ S.Kat - 这是一个错字 - 我忘了在参数中加上括号。我会编辑答案,以免其他人感到困惑。 – YowE3K

+0

@ S.Kat P.S. 'Set wbDatafile = Workbooks(ActiveWorkbook.Name)'将等同于'Set wbDatafile = ActiveWorkbook' – YowE3K

相关问题