Страницы: 1
RSS
Сборка не скольких книг в одну, Необходимо изменить при сборке файлов в одну книгу в назвнии листа указывать первые три (четыре) символа названия файла.
 
Уважаемые форумчане! Прошу помочь! Нашел на нашем сайте код. Как его модифицировать, что бы при сборке наименование листа состяло из первых трёх-четырёх символов названия собираемых файлов. Спасибо!
Код
Sub Сбор_листов_в_один_файл()
 Const strStartDir = "c:\test" 'папка, с которой начать обзор файлов
 Const strSaveDir = "c:\test\result" 'папка, в которую будет предложено сохранить результат
 Dim wbTarget As New Workbook, wbSrc As Workbook, shSrc As Worksheet, shTarget As Worksheet, arFiles, _
 i As Integer, stbar As Boolean
 On Error Resume Next 'если указанный путь не существует, обзор начнется с пути по умолчанию
 ChDir strStartDir
 On Error GoTo 0
 With Application 'меньше писанины
 arFiles = .GetOpenFilename("Excel Files (*.xls), *.xls", , "Объединить файлы", , True)
 If Not IsArray(arFiles) Then End 'если не выбрано ни одного файла
 Set wbTarget = Workbooks.Add(template:=xlWorksheet)
 .ScreenUpdating = False
 stbar = .DisplayStatusBar
 .DisplayStatusBar = True
 .DisplayAlerts = False
 For i = 1 To UBound(arFiles)
 .StatusBar = "Обработка файла " & i & " из " & UBound(arFiles)
 Set wbSrc = Workbooks.Open(arFiles(i), ReadOnly:=True)
 For Each shSrc In wbSrc.Worksheets
 If IsNull(shSrc.UsedRange.Text) Then 'лист не пустой
 Set shTarget = wbTarget.Sheets.Add(after:=wbTarget.Sheets(wbTarget.Sheets.Count))
 shTarget.Name = shSrc.Name & "-" & i
 shSrc.Cells.Copy shTarget.Range("A1")
 End If
 Next
 wbSrc.Close False 'закрыть без запроса на сохранение
 Next
 .ScreenUpdating = True
 .DisplayStatusBar = stbar
 .StatusBar = False
 If wbTarget.Sheets.Count = 1 Then 'не добавлено ни одного листа
 MsgBox "В указанных книгах нет непустых листов, сохранять нечего!"
 wbTarget.Close False
 End
 Else
 .DisplayAlerts = False
 wbTarget.Sheets(1).Delete
 .DisplayAlerts = True
 End If
 On Error Resume Next 'если указанный путь не существует и его не удается создать,
 'обзор начнется с последней использованной папки
 If Dir(strSaveDir, vbDirectory) = Empty Then MkDir strSaveDir
 ChDir strSaveDir
 On Error GoTo 0
 arFiles = .GetSaveAsFilename("Результат", "Excel Files (*.xls), *.xls", , "Сохранить объединенную книгу")
 If VarType(arFiles) = vbBoolean Then 'если не выбрано имя
 GoTo save_err
 Else
 On Error GoTo save_err
 wbTarget.SaveAs arFiles
 End If
 End
 save_err:
 MsgBox "Книга не сохранена!", vbCritical
 End With
 End Sub
 
23-ю строку кода запишите так
Код
shTarget.Name = Left(shSrc.Name, 4) & "-" & i '4 символа
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх