У меня есть два кода. Я бы хотел, чтобы второй код выполнял первый код для всех файлов в каталоге. Первый код работает как шарм и делает именно то, что мне это нужно, чтобы, в том, что:Цитирование всех файлов в папке
Sub STATTRANSFER()
' Transfers all STATS lines
Application.ScreenUpdating = False
Worksheets.Add After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = "STATS"
Set f = Sheets(1)
Set e = Sheets("Stats")
Dim d
Dim j
Dim k
d = 1
j = 1
k = 1
Do Until IsEmpty(f.Range("A" & j))
If f.Range("A" & j) = "STATS" Then
e.Rows(d).Value = f.Rows(j).Value
d = d + 1
f.Rows(j).Delete
Else
j = j + 1
End If
Loop
Application.ScreenUpdating = True
End Sub
второй код выглядит следующим образом:
Public Sub DataProcess()
Dim folderPath
Dim filename
Dim newfilename
Dim SavePath
Dim mySubFolder As Object
Dim mainFolder As Object
Dim WB As Workbook
Dim OrigWB As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim name1 As String
Dim name2 As String
Set OrigWB = ThisWorkbook
Set objFSO = CreateObject("Scripting.FileSystemObject")
folderPath = ActiveWorkbook.Path
Set mainFolder = objFSO.GetFolder(folderPath)
filename = Dir(folderPath & "*.csv")
Do While Len(filename) > 0
Set WB = Workbooks.Open(folderPath & filename)
Call STATTRANSFER
ActiveWorkbook.Close SaveChanges:=True
filename = Dir
Loop
For Each mySubFolder In mainFolder.SubFolders
filename = Dir(mySubFolder.Path & "\*.csv*")
Do While Len(filename) > 0
Set WB = Workbooks.Open(mySubFolder.Path & "\" & filename)
Call STATTRANSFER
ActiveWorkbook.Close SaveChanges:=True
filename = Dir
Loop
Next
End Sub
второй код делает успешно петлю через все папки и документы, которые я хочу, но он неправильно выполняет мой первый код. Когда я выполняю первый код только на одном листе, он создает новый лист, называемый STATS, затем берет все строки из первого листа, который имеет слово STATS в столбце A, и копирует их на новый лист, затем удаляет строки STATS из первый лист.
Когда я запускаю его со вторым кодом, который проходит через все папки, он не работает одинаково. Я вижу, что он создает лист, который называется STATS на моем экране, но затем, когда он заканчивается, и я открываю документы, все строки, которые имеют STATS в столбце A, находятся на первом листе, лист STATS больше не существует, и все данные, которые не имеют STATS в столбце A, исчезли. Поэтому я не уверен, в чем проблема.
Вы пробовали переходить через второй макрос с помощью 'F8'? Это позволит вам следить за движением макроса по строкам, и вы можете помочь сжать * где * макрос переходит влево. Я думаю (вслух), возможно, вы захотите передать книгу в первый макрос, поэтому он знает, как использовать конкретную книгу? – BruceWayne
Вы пытаетесь открыть книгу в папках, а затем запустить STATTRANSFER? Если это так, вам нужно будет ссылаться на WB. –
@BruceWayne Переход через F8 не сделает ничего, на что я верю, потому что код работает нормально, без ошибок –