2015-10-27 91 views
1

我試着合併第三個內部2個Excel表格用下面的代碼VBA Excel宏2文件中讀取

`Sub CommandButton1_Click() 
Dim MyFile As String 
Dim Filepath As String 
Filepath = "C:\temp\" 
MyFile = Dir(Filepath) 
    'MyFile = "12_10_15_par.xlxs" 
    'If MyFile = "12_10_15_par.xlsx" Then 
    If MyFile = Cells(4, 2) Then 
     Workbooks.Open (Filepath & MyFile) 
     Worksheets("par").Range("A1:K1000").Copy 
     ActiveWorkbook.Close 
     ActiveSheet.Paste Destination:=Worksheets("match").Range("T1:AF1001") 
     'Application.CutCopyMode = False 
    End If 
    MyFile2 = Dir(Filepath) 
    If MyFile2 = Cells(5, 2) Then 
     Workbooks.Open (Filepath & MyFile2) 
     Worksheets("ops").Range("A1:K1000").Copy 
     ActiveWorkbook.Close 
     ActiveSheet.Paste Destination:=Worksheets("match").Range("D1:S1001") 
     'Application.CutCopyMode = False 
    End If 

End Sub` 

也許處理合並的錯誤,我所做的一切錯誤的,因爲Myfile2保持第一值,而不是領新的...

+0

你需要循環有下一個值,答案來了;) – R3uK

回答

0

這裏是如何使用Dir(),注意在循環結尾MyFile = Dir(),它會在循環之前加載下一個文件名MyFile

試試這個:

Sub CommandButton1_Click() 
Dim MyFile As String, _ 
    Filepath As String, _ 
    oWb As Workbook, _ 
    pWb As Workbook 

Filepath = "C:\temp\" 
Set pWb = ThisWorkbook 

MyFile = Dir(Filepath) 
Do While MyFile <> "" 
    If MyFile <> Cells(4, 2) And MyFile <> Cells(5, 2) Then 
    Else 
     Set oWb = Workbooks.Open(Filepath & MyFile) 
     If MyFile <> Cells(5, 2) Then 
      oWb.Worksheets("par").Range("A1:K1000").Copy Destination:=pWb.Worksheets("match").Range("T1:AF1001") '4 
     Else 
      oWb.Worksheets("ops").Range("A1:K1000").Copy Destination:=pWb.Worksheets("match").Range("D1:S1001") '5 
     End If 
     'Application.CutCopyMode = False 
     oWb.Close 
    End If 
    MyFile = Dir() 
Loop 

End Sub 
+0

親愛R3uK,太感謝你了!不僅僅是答案...首先我要感謝你的標準程序觀點,必須在每個地方(1 + 1模式)。所以我必須打開2個工作簿(據我瞭解),以完成這項工作。再次感謝!!! –

+1

@NektariosKyriakou:不客氣!事實上,我在代碼中添加了2個工作簿對象,以便輕鬆地引用您正在工作的這些對象,一個對象用於初始工作簿,另一個用於打開並在循環之前關閉並在另一個打開工作簿中使用相同對象的對象。如你所見,對象變量非常實用! – R3uK

+0

如此歡迎! –