2016-07-18 73 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

相關問題