Делаю выгрузку из программы по техническим характеристикам на изделия. Изделий порядка 1000. Нужно сделать что-то типа базы данных. Нашел макрос по объединению dbf файлов: [vba]
Код
Sub Wowanich() Const dir = "C:\test" 'Вставь правильный путь !!! ChDir dir Set fso = CreateObject("scripting.filesystemobject") For Each ff In fso.getfolder(dir).Files Set blank_cell = Cells(Range("a1").SpecialCells(xlCellTypeLastCell).Row + 1, 1) If Right(ff.Name, 4) = ".dbf" Then Set dbf = Workbooks.Open(Filename:=ff.Name, ReadOnly:=True) dbf.Sheets(1).Range("a2", Range("a1").SpecialCells(xlCellTypeLastCell)).Copy blank_cell dbf.Close End If Next End Sub
[/vba] Как можно дописать его, чтобы вставлялся доп.столбец с именем файла. Имя файла выглядит что-то типа: Кубик_Таблицы операций_Общая.dbf. Из имени файла нужно вытащить именно название "Кубик", т.е. то, что идет до знака "_".
Делаю выгрузку из программы по техническим характеристикам на изделия. Изделий порядка 1000. Нужно сделать что-то типа базы данных. Нашел макрос по объединению dbf файлов: [vba]
Код
Sub Wowanich() Const dir = "C:\test" 'Вставь правильный путь !!! ChDir dir Set fso = CreateObject("scripting.filesystemobject") For Each ff In fso.getfolder(dir).Files Set blank_cell = Cells(Range("a1").SpecialCells(xlCellTypeLastCell).Row + 1, 1) If Right(ff.Name, 4) = ".dbf" Then Set dbf = Workbooks.Open(Filename:=ff.Name, ReadOnly:=True) dbf.Sheets(1).Range("a2", Range("a1").SpecialCells(xlCellTypeLastCell)).Copy blank_cell dbf.Close End If Next End Sub
[/vba] Как можно дописать его, чтобы вставлялся доп.столбец с именем файла. Имя файла выглядит что-то типа: Кубик_Таблицы операций_Общая.dbf. Из имени файла нужно вытащить именно название "Кубик", т.е. то, что идет до знака "_".AnRusik
AnRusik, - Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь) Помогающим просьба воздержаться от ответов в этой теме до исправления замечания
исправлено
AnRusik, - Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь) Помогающим просьба воздержаться от ответов в этой теме до исправления замечания
Sub Wowanich() Const dir = "C:\test" 'Вставь правильный путь !!! ChDir dir Set fso = CreateObject("scripting.filesystemobject") For Each ff In fso.getfolder(dir).Files Set blank_cell = Cells(Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1, 1) If Right(ff.Name, 4) = ".dbf" Then Set dbf = Workbooks.Open(Filename:=ff.Path, ReadOnly:=True) dbf.Sheets(1).Range("a2", dbf.Sheets(1).Range("a1").SpecialCells(xlCellTypeLastCell)).Copy blank_cell.Offset(, 1) blank_cell.Resize(dbf.Sheets(1).Range("a2", dbf.Sheets(1).Range("a1").SpecialCells(xlCellTypeLastCell)).Rows.Count) = Split(ff.Name & "_", "_")(0) dbf.Close End If Next End Sub
[/vba]
Так проверьте [vba]
Код
Sub Wowanich() Const dir = "C:\test" 'Вставь правильный путь !!! ChDir dir Set fso = CreateObject("scripting.filesystemobject") For Each ff In fso.getfolder(dir).Files Set blank_cell = Cells(Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1, 1) If Right(ff.Name, 4) = ".dbf" Then Set dbf = Workbooks.Open(Filename:=ff.Path, ReadOnly:=True) dbf.Sheets(1).Range("a2", dbf.Sheets(1).Range("a1").SpecialCells(xlCellTypeLastCell)).Copy blank_cell.Offset(, 1) blank_cell.Resize(dbf.Sheets(1).Range("a2", dbf.Sheets(1).Range("a1").SpecialCells(xlCellTypeLastCell)).Rows.Count) = Split(ff.Name & "_", "_")(0) dbf.Close End If Next End Sub