2017-02-20 75 views
0

我需要一些啓示。 我試圖用Excel工作簿中的某些工作表匹配Excel文件的文件夾。到目前爲止,我可以讀取這些Excel文件名稱和相應的表格,並將其複製到我的工作簿的sheet1B1。之後,我爲每個文件創建一個工作表。Excel VBA循環文件夾,並檢查Excel文件名是否等於工作表

我想讓宏繼續並將目錄中的每個文件與工作簿中的工作表進行比較。如果工作簿中的工作表名稱等於文件名稱,則不能複製文件內容(這些文件中只有sheet1有數據)。

這是我到目前爲止有:

Sub readme() 

Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer 

Application.ScreenUpdating = False 
directory = "D:\Claro Chile\Report_sem_formulas\" 
fileName = Dir(directory & "*.xl??") 

     Do While fileName <> "" 

      i = i + 1 
      j = 2 
      Cells(i, 1) = fileName 
      Workbooks.Open (directory & fileName) 

        For Each sheet In Workbooks(fileName).Worksheets 

        Workbooks("Report Status v1.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name 

        j = j + 1 

     Next sheet 

    Workbooks(fileName).Close 
    fileName = Dir() 

Loop 

Application.ScreenUpdating = True 
Call create_sheets_starting_from_B1 

End Sub 

Sub create_sheets_starting_from_B1() 

Dim MyCell As Range, MyRange As Range 

Set MyRange = Sheets("Summary").Range("B1") 
Set MyRange = Range(MyRange, MyRange.End(xlDown)) 

    For Each MyCell In MyRange 
     Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet 
     Sheets(Sheets.Count).Name = MyCell.Value 'renames the new worksheet 
    Next MyCell 

Sheets("Summary").Move Before:=Sheets(1) 

End Sub 
+0

THKS白韞六,將改善下一次! – EdN

回答

0

未經測試!

但你可能需要的東西,如:

Sub sheetCompare() 
    Dim i As Integer 
    Dim mDirs As String 
    Dim path As String 
    Dim OutFile As Variant, SrcFile As Variant 
    Dim file As Variant 

    OutFile = ActiveWorkbook.Name 
    mDirs = "c:\" 'your dir here 
    file = Dir(mDirs) 
    While (file <> "") 
     path = mDirs + file 
     Workbooks.Open (path) 
     SrcFile = ActiveWorkbook.Name 

     For i = 1 To Workbooks(OutFile).Sheets.Count 
      If file = Workbooks(OutFile).Sheets(i).Name Then 
       'copy logic 
      End If 
     Next i 
     Workbooks(file).Close (False) 
     file = Dir 
    Wend 
End Sub 
+0

也許我做錯了什麼,但我得到一個永無止境的循環:D。 – EdN

+0

對不起,這是我的錯。我忘了進入下一個文件。看到最後兩行 – tretom

+0

不知道如何執行復制邏輯...有它在我心中,但似乎無法弄清楚如何去做 – EdN

相關問題