Oczywiście. Przepraszam, wtedy nie miałem czasu a później zapomniałem
Uruchomienie funkcji poszukiwania plików:Set fs = Application.FileSearch
With fs Określenie parametrów poszukiwania. Ścieżka dostępu (catalog):.LookIn = "c:\raporty" I nazwa pliku. Plik zaczyna się ciągiem znaków “Raport Dobowy”. Gwiazdka oznacza dowolny ciąg znaków a „.xls” oznacza rozszerzenie poszukiwanych plików:.Filename = "Raport Dobowy*.xls" Tu zaczyna się duży warunek. Jeżeli wynik poszukiwań jest dodatni, czyli zostały znalezione pliki spełniające podane wyżej kryteria:If .Execute > 0 Then to zostaje wyświetlone okno z informacją o odnalezieniu plików i ich ilości. Tekst ma postać „Odnalazłem x plików” :MsgBox "Odnalazłem " & .FoundFiles.Count & " plików." Tutaj otwiera się okno z pytaniem “Czy pobrać dane ze znalezionych plików?”.
Okno ma tytuł „Co dalej?”. Ma 2 przyciski: „Tak” i „Nie”. Jest oknem pytania. Jego domyślną odpowiedzią jest „Tak”.:Msg = "Czy pobrać dane ze znalezionych plików?"
Style = vbYesNo + vbQuestion + vbDefaultButton1
Title = "Co Dalej?" Wynikiem pytania zadanego w otwartym oknie jest odpowiedź „Response”:Response = MsgBox(Msg, Style, Title) Tutaj zaczyna się mały warunek. Jeżeli odpowiedzią jest „Tak” to idź do „pobranie”:If Response = vbYes Then
GoTo pobranie W przeciwnym wypadku idź do „koniec”:Else
GoTo koniec Koniec małego warunku:End If POBRANIE:pobranie: Tu zaczyna się pętla. Będzie wykonana tyle razy ile plików zostało odnalezionych:For i = 1 To .FoundFiles.Count Otwórz odnaleziony plik:Workbooks.Open .FoundFiles(i) Zaznacz w nim komórkę „B1”. ActiveSheet.Range("B1").Select Przy każdym kolejnym wykonaniu pętli wartość „kolumna” zwiększy się o jeden. Pozwoli to na zapisanie danych z każdego następnego pliku w osobnej kolumnie pliku zbiorczego.:kolumna = kolumna + 1 Dana w zaznaczonej komórce „B1” dostaje nazwę Dana1: Dana1 = ActiveCell.Value Dana znajdująca się o jeden wiersz pod „B1” dostaje nazwę Dana2:Dana2 = ActiveCell.Offset(1, 0).Value Dana znajdująca się o dwa wiersze pod „B1” dostaje nazwę Dana3. Każda następna linia określa nazwę kolejnych danych. Offset to nic innego jak przsunięcie – jak w szachach: (a,b) gdzie a to nr wiersza a b to nr kolumny. Zamiast wiersza można zmieniać kolumny lub i jedno i drugie równocześnie. Można też za każdym razem do określenia położenia interesującej nas danej, używać polecenia „ActiveSheet.Range("X").Select” i „N = ActiveCell.Value”
, gdzie X oznacza adres komórki z daną a N nazwę danej.Dana3 = ActiveCell.Offset(2, 0).Value
Dana4 = ActiveCell.Offset(3, 0).Value
Dana5 = ActiveCell.Offset(4, 0).Value
Dana6 = ActiveCell.Offset(5, 0).Value
Dana7 = ActiveCell.Offset(6, 0).Value
Dana8 = ActiveCell.Offset(7, 0).Value
Dana9 = ActiveCell.Offset(8, 0).Value
Dana10 = ActiveCell.Offset(9, 0).Value Po zebraniu danych zamyka się okno pliku źródłowego:ActiveWindow.Close W oknie pliku zbiorczego zaznaczona zostaje komórka „A1”:Range("A1").Select Komórki znajdujące się w odsunięciu (a,b) od komórki „A1” dostają wartości Dana1, Dana2 itd. Ich adresy podawane są Tak jak przy zbieraniu danych: Offset(a,b), gdzie a to wiersz, b to kolumna (inna dla każdego pliku):ActiveCell.Offset(0, kolumna).Value = Dana1
ActiveCell.Offset(1, kolumna).Value = Dana2
ActiveCell.Offset(2, kolumna).Value = Dana3
ActiveCell.Offset(3, kolumna).Value = Dana4
ActiveCell.Offset(4, kolumna).Value = Dana5
ActiveCell.Offset(5, kolumna).Value = Dana6
ActiveCell.Offset(6, kolumna).Value = Dana7
ActiveCell.Offset(7, kolumna).Value = Dana8
ActiveCell.Offset(8, kolumna).Value = Dana9
ActiveCell.Offset(9, kolumna).Value = Dana10 Koniec pętli. Przejście do kolejnego pliku.Next i Alternatywa dla dużego warunku. Jeżeli nie zostanie odnaleziony choćby jeden plik spełniający warunki poszukiwań:Else To zostaje wyświetlony komunikat:MsgBox "Nie odnalazłem plików z danymi." Koniec dużego warunku:End If „Wyłączenie” funkcji poszukiwań plików:End With KONIEC:koniec: Koniec makra:End SubOczywiście to makro wcale nie musi otwierać okien informacyjnych czy też pytać o to, czy pobrać dane z plików. Mozna to poprostu pominąć.
Uruchamiane może być przyciskiem zagnieżdżonym w arkuszu pliku zbiorczego lub automatycznie przy otwieraniu tegoż pliku.
Mam nadzieję, że ten opis jest na tyle przejrzysty i jasny, że wszystko jest już wiadome. Jeżeli nie (niestety, nie posiadam daru przekazywania wiedzy
) to zapraszam do mnie osobiście. Może wtedy będzie łatwiej.
noooo teraz to wszystko jasne ...