Просмотров: 43573

Как сделать в ексел

Закрыть ... [X]

Fedogor, так вряд ли получится, потому что здесь еще есть предыстория.
Есть папка. В ней много подпапок. Во всех этих подпапках лежат .xls файлы одного шаблона. И эти файлы добавляются, точно так же, как и папки. И когда-то на этом форуме один очень добрый человек помог мне написать макрос, который находит все эти файлы.
И всё было бы хорошо, но в силу того, что я знаю vba так, как третьеклассник знает математику, я не могу дописать этот макрос так, чтоб достать из этих файлов необходимые данные.
Суть в том, чтоб из многих файлов, которые добавляются и обновляются, создать небольшую базу данных. К примеру, в каждом таком файле в одной определённой ячейке есть имя клиента, во второй количество купленного товара и в третьей цена товара. И эти данные из файлов по разным клиентам нужно свести в одну табличку в отдельной книге.
Ниже приведены две процедуры (спасибо, Аналитика), которые находят все .xls файлы во всех папках первого уровня вложения, и заносят в столбец А пути ко всем файлам. Список этих файлов на рабочем листе мне, по сути, не нужен, было бы лучше, если бы пути к этим файлам просто сохранялись в памяти программы. И дальше мне нужен только пример того, как из каждой этих рабочих книг достать значение какой-то одной ячейки и вставить его в активную рабочую книгу в столбик.
Visual Basic 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Dim N_com%, Folders_Com() As String Sub Quest() Dim i% Const Folder$ = "X:\Test" N_com = 0 Call Subfolders2_in(Folder) For i = 1 To N_com Filename = Dir(Folders_Com(i) & ".xls") Do While Filename <> "" Range("A1").End(xlDown).Offset(1, 0).Value = Folders_Com(i) & Filename Filename = Dir Loop Next i End Sub Sub Subfolders2_in(Folder$) Dim Folders() As String Dim N%, i% Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(Folder) Set fc = f.SubFolders N = 0 On Error Resume Next For Each f1 In fc N = N + 1 ReDim Preserve Folders(1 To N) As String Folders(N) = Folder & "\" & f1.Name & "\" N_com = N_com + 1 ReDim Preserve Folders_Com(1 To N_com) As String Folders_Com(N_com) = Folders(N) Next f1 If N = 0 Then Exit Sub End Sub


Источник: http://www.cyberforum.ru/vba/thread157325.html

Похожие новости


Как сделать разбор слова в русском языке
Avr программаторы своими руками
Туркменские ковры ручная работа
Узор на потолке своими руками
Аксессуары для себя своими руками


СЕЙЧАС ЧИТАЮТ