Moje doświadczenia z Excelem, Accesem i programowaniem w VBA
Blog > Komentarze do wpisu

Odczyt listy plików z katalogu

Tym razem - temat wywołany pośrednio wątkiem z forum dyskusyjnego. Jest sobie katalog, w którym jest kilkaset plików Excela. Pliki są wypełniane zgodnie z ustalonym szablonem. Do ich analizy potrzebne jest porównanie wartości z kilku, ściśle określonych komórek, w kolejnych arkuszach. Jak to zrobić szybko i sprawnie? Najlepiej wykorzystując do tego VBA.

Na początek spróbujmy odczytać wszystkie nazwy plików w katalogu. Dla potrzeb tego przykładu - na dysku C założyłam katalog Arkusze i wrzuciłam tam 5 skoroszytów o nazwach Zeszyt1, Zeszyt2, Zeszyt3 ..itd. Wyniki zapisuję w pliku Zbiorówka.
Przykładowy kod makra odczytującego nazwy plików z danego katalogu wygląda tak:

Public Sub ListaPlikow()

Dim Katalog As String
Dim NazwaPliku As String
Dim IndexSheet As Worksheet
Dim KolejnyWiersz As Long

KolejnyWiersz = 3

Set IndexSheet = ThisWorkbook.ActiveSheet
Katalog = Range("A1").Value
Katalog = Katalog & "\"

NazwaPliku = Dir(Katalog & "*.xls")
Do While NazwaPliku <> ""
IndexSheet.Cells(KolejnyWiersz, 1).Value = NazwaPliku
KolejnyWiersz = KolejnyWiersz + 1
NazwaPliku = Dir
Loop

Set IndexSheet = Nothing
End Sub

Zmienna Katalog odwołuje się do wartości komórki A1, w której wpisana jest nazwa katalogu. Zapisywanie nazw plików zaczyna się od wiersza 3 w kolumnie A - dwa pierwsze wiersze są nagłówkiem.
Efekt działania makra wygląda tak:

lista plików

 Ciąg dalszy - w kolejnej notce.

sobota, 18 września 2010, marzatela













Polecane wpisy

TrackBack
TrackBack URL wpisu:
Odczyt i porównanie wartości komórek z wielu plików z Excel, Access, VBA ....
Ciąg dalszy poprzedniej notki Odczyt listy plików z katalogu Skoro w arkuszu już mamy listę plików - to pora odszukać w nich wartości odpowiednich komórek. Żeby w prosty sposób sprawdzic efekt działania makra - moje przykładowe arkusze wypełniłam ... »
Wysłany 2013/09/10 18:08:58
Komentarze
Gość: Wojtek, *.internetdsl.tpnet.pl
2012/06/08 15:16:00
Witam,
Jak tu podać ścieżkę o jeden katalog w górę?
-
2012/06/08 19:37:31
@Wojtek
Przykład takiego rozwiązania opisałam tu:
Katalog - jeden poziom wyżej
-
Gość: xordi, *.13-2.cable.virginmedia.com
2013/01/10 01:18:52
A jest jakaś opcja żeby listę plików pobrać poprzez połączenie ftp z serwera ?
-
2013/01/10 06:33:41
@Gość
Nie ćwiczyłam tego nigdy, ale wydaje się, że nie powinno byc problemu. Po prostu do zmiennej Katalog trzeba przypisać adres ftp.
-
Gość: xordi, *.pila.vectranet.pl
2013/01/24 02:07:41
Niestety to nie działa, myślę że trzeba napisać całe połączenie z ftp pod VBS...
-
2013/01/24 08:09:48
W wolnej chwili sporóbuję się tym zając, ale ostatnio mam problem z czasem :(
Spróbuj spytać na Excelforum - to najlepsze forum Excela w polskim internecie.
-
Gość: Witold, *.telexispl.com
2013/09/09 15:00:29
[Jestem laikiem] Jak zrobić z utworzonej listy hiperłącza do plików? Proszę ewentualnie o info gdzie poprawić kod, aby od razu generowały się hiperłącza.
-
2013/09/11 12:37:20
@Witold
Przerobiony kod zamieściłam tu:
Odczyt listy plików z katalogu - uzupełnienie
-
Gość: Piotr, *.telexispl.com
2013/11/15 09:55:05
Bardzo przydatne, działa idealnie. Podziękowania za zaanagażowanie
-
Gość: nomad6, 91.221.144.*
2014/02/05 05:00:12
Witam.
Jestem zielony w temacie VBA.
Czy istnieje możliwość załączenia pliku excela z zapisanym makrem?
-
2014/02/05 07:00:30
@Nomad
Nie, tu nie ma takiej możliwości. Możesz jednak skopiować kod - to tekst, a nie obraz.
Zapraszam tez na Excelforum - tam jest możliwość wstawiania plików.
-
Gość: , *.cz.glaverbel.com
2014/03/31 15:46:07
A jak pobrać z tego katalogu: Datę Modyfikacji, Rozmiar
-
2014/04/01 08:15:35
@Go??
Maj?c odczytan? w p?tli nazw? pliku, mo?na skorzysta? z funkcji FileDataTime.
W tym przypadku - wystaraczy dopisa? w p?tli np.
IndexSheet.Cells(KolejnyWiersz, 2).Value = FileDateTime(NazwaPliku)
Je?eli chodzi o rozmiar pliku - musia?abym poszukac.
-
Gość: , *.cz.glaverbel.com
2014/04/02 13:57:42
Działa,
Dziękuję bardzo za pomoc.
-
Gość: maetamorphosis, *.dynamic.chello.pl
2015/11/20 16:21:59
Działa idealnie. Łatwe do zrozumienia i modyfikacji. :)
-
Gość: bialy9999, *.13.ftth.classcom.pl
2017/01/23 19:07:28
Witam, mam makro które otwiera pliki z katalogu,potrzebuje żeby w np. komórca a1 pojawiała sie nazwa pliku z którego pobrałem dane
Dziękuję
-
Gość: Iza, 95.40.226.*
2018/01/02 16:55:49
Muszę napisać makro (excel 2010), które liczy pliki w folderze, który znajduje się w lokalizacji sieciowej. Czy jest to możliwe ?
-
2018/01/03 06:44:26
@Iza
Zerknij tu:
Ile plików w katalogu?
-
Gość: Iza, *.dynamic.gprs.plus.pl
2018/01/04 13:07:05
Dziękuje bardzo za pomoc. Mam jeszcze taki problem. Mam główny folder Projekty, a w nim podfoldery: Projekt 1
Zdjęcia
Dokumenty
Projekt 2
Zdjęcia
Dokumenty
Projekt 3
Zdjęcia
Dokumenty
Jak napisać makro, które wypisze mi w 1 kolumnie arkusza ścieżki wszystkich podfolderów Zdjęcia znajdujących się w folderze Projekty?
-
Gość: Iza, *.dynamic.gprs.plus.pl
2018/01/04 13:11:28
Chodzi o to, że w każdym podfolderze (Projekt 1, Projekt 2, Projekt 3) znajdują się ich podfoldery (Zdjęcia, Dokumenty). Mój poprzedni komentarz może być niezrozumiały
-
2018/02/09 21:09:39
Makro bardzo mi się przydało.
Mam jeszcze jedno usprawnienie na myśli. Chciałbym aby nazwy plików były jednocześnie linkami do tych plików. Czy taka opcja istnieje.
Sam nie ma pojęcia jak zmodyfikować plik. Czy mógłby ktoś z Was pomóc?

Public Sub ListaPlikow()

Dim Katalog As String
Dim NazwaPliku As String
Dim IndexSheet As Worksheet
Dim KolejnyWiersz As Long

KolejnyWiersz = 3

Set IndexSheet = ThisWorkbook.ActiveSheet
Katalog = Range("A1").Value
Katalog = Katalog & "\"

NazwaPliku = Dir(Katalog & "*.xlsx")
Do While NazwaPliku <> ""
IndexSheet.Cells(KolejnyWiersz, 1).Value = NazwaPliku
KolejnyWiersz = KolejnyWiersz + 1
NazwaPliku = Dir
Loop

Set IndexSheet = Nothing
End Sub
-
Gość: grajek, *.neoplus.adsl.tpnet.pl
2018/05/03 19:53:11
Jak zrobić za pomocą FSO by z katalogu "baza" wypisywało wszystkie nazwy plików dajmy na to w kolumnie B od wiersza 2, ale bez rozszerzenia (czyli bez .xlsx np.) oraz w kolumnie C by z tych plików z "Arkusza1" zwracało wartość z ostatniej niepustej komórki?


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:

Wydawnictwo Strefa Kursów



ministat liczniki.org



Napisz do mnie!