Cytat: Mam następujący problem. Chciałbym załadować za pomocą makra do komórek dane z plików tekstowych znajdujących się w katalogu "C:\temp". Nazwy plików są w postaci numerów od 1 do 100, czyli: 1.txt, 2.txt, 3.txt... itd. Oczywiście można to zrobić nagrywając makro, za każdym razem importując dane z następnego pliku tekstowego, ale jednak chciałbym, żeby:
Opcja I
Makro załadowało dane z tych plików, "nie wiedząc" jakie są ich nazwy, czy jest to możliwe? Chodzi o to, że np. pokazuję programowi katalog, w którym są pliki tekstowe, resztę robi program działając wedle jakiejś procedury, np. żeby ładował pliki alfabetycznie, dzięki temu mając zachowaną kolejność ładowania danych, co jest dla mnie bardzo istotne.
Prosty programik:
Sub wczytaj_pliki()
aktywny_plik = Excel.ActiveWorkbook.Name 'nazwa aktywnego pliku
Cells.Clear ' czyszczenie arkusza
wiersz = 1 ' ustawienie pierwszego wiersze
Set fs = Application.FileSearch
katalog = "d:\moje\vba\pliki\" ' katalog z plikami
With fs
.LookIn = katalog ' szukamy plikow w tym katalogu
.Filename = "*.txt" ' rozszezenie plikow
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then ' sprawdzenie czy sa takie pliki
For i = 1 To .FoundFiles.Count 'petla plikow od 1 do liczby plikow
Name = fs.FoundFiles(i) ' sciezka bieżącego pliku txt
Workbooks.OpenText Filename:=fs.FoundFiles(i), Origin:=852, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(3, _
1), Array(6, 1)), TrailingMinusNumbers:=Tru 'sposob wczytania pliku txt do excela
wiersz_pliku_txt = 1 ' ustawienie pierwszego wiersze pliku txt
Do While Cells(wiersz_pliku_txt, 1) <> ""
Workbooks(aktywny_plik).Sheets(1).Cells(wiersz, 1) = Cells(wiersz_pliku_txt, 1) 'kopiowanie pierwszej kolumny
Workbooks(aktywny_plik).Sheets(1).Cells(wiersz, 2) = Cells(wiersz_pliku_txt, 2) 'kopiowanie drugiej kolumny
'dodaj takich wierszy ile chcesz wczytac klumn lub zrob petle
wiersz_pliku_txt = wiersz_pliku_txt + 1 'kolejny wiersz pliku txt
wiersz = wiersz + 1 ' kolejny wiersz pliku z
Loop
Excel.ActiveWorkbook.Close False ' zamkniecie pliku txt
Next i ' nastepny plik txt
Else
MsgBox "There were no files found." 'informacja ze nie ma takich plikow
End If
End With
End Sub
S |