Дорогие друзья требуется помощь. Имеется файл с кодом VBA, который по заданным параметрам копирует и вставляет листы в исходный файл. Теперь потребовалось вставить в исходный файл еще несколько листов с теоретическими данными, но если просто вставлять или создавать листы, то код их удаляет. Вставить надо листы между файлами "Отчет" и "Фото1". Прошу откликнуться. Файлы в приложении не прикрепляются весят много. могу выслать на почту.
Дорогие друзья требуется помощь. Имеется файл с кодом VBA, который по заданным параметрам копирует и вставляет листы в исходный файл. Теперь потребовалось вставить в исходный файл еще несколько листов с теоретическими данными, но если просто вставлять или создавать листы, то код их удаляет. Вставить надо листы между файлами "Отчет" и "Фото1". Прошу откликнуться. Файлы в приложении не прикрепляются весят много. могу выслать на почту.sibtherm
Sub CopySheets(wbTo As Workbook, wbFrom As Workbook, arr, i%) Dim w As Worksheet, j% wbFrom.Sheets(arr).Copy after:=wbTo.Sheets(wbTo.Sheets.Count) If i > 1 Then For Each w In wbTo.Sheets(arr) For j = wbTo.Sheets.Count To 5 Step -1 If wbTo.Sheets(j).Name Like (w.Name & "#") Then w.Move after:=wbTo.Sheets(j): GoTo nxSheet Next If w.Name = "Граф" Then For j = wbTo.Sheets.Count To 5 Step -1 If wbTo.Sheets(j).Name Like "РК*" Then w.Move after:=wbTo.Sheets(j): GoTo nxSheet Next End If nxSheet: Next End If End Sub
Sub main() Dim i%, j%, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
On Error Resume Next Application.ScreenUpdating = False tCalc = Application.Calculation Application.Calculation = xlCalculationAutomatic
Set twb = ThisWorkbook If twb.Sheets.Count > 4 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 5 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
[/vba]
Это весь код. Вот здесь надо что то изменить чтобы вставить в исходный файл еще 7 листов чтобы они были стационары, и уже после них код вставлял необходимые данные.
[vba]
Код
Option Explicit
Sub CopySheets(wbTo As Workbook, wbFrom As Workbook, arr, i%) Dim w As Worksheet, j% wbFrom.Sheets(arr).Copy after:=wbTo.Sheets(wbTo.Sheets.Count) If i > 1 Then For Each w In wbTo.Sheets(arr) For j = wbTo.Sheets.Count To 5 Step -1 If wbTo.Sheets(j).Name Like (w.Name & "#") Then w.Move after:=wbTo.Sheets(j): GoTo nxSheet Next If w.Name = "Граф" Then For j = wbTo.Sheets.Count To 5 Step -1 If wbTo.Sheets(j).Name Like "РК*" Then w.Move after:=wbTo.Sheets(j): GoTo nxSheet Next End If nxSheet: Next End If End Sub
Sub main() Dim i%, j%, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
On Error Resume Next Application.ScreenUpdating = False tCalc = Application.Calculation Application.Calculation = xlCalculationAutomatic
Set twb = ThisWorkbook If twb.Sheets.Count > 4 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 5 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
[/vba]
Это весь код. Вот здесь надо что то изменить чтобы вставить в исходный файл еще 7 листов чтобы они были стационары, и уже после них код вставлял необходимые данные.sibtherm
Во-первых, это не весь код. Этот код не самостоятельный, он вызывается другим кодом. Во-вторых, почему бы Вам не запаковать файлы-примеры(небольшие) в рар и не выложить здесь? Это существенно ускорит решение, уверяю Вас.
Во-первых, это не весь код. Этот код не самостоятельный, он вызывается другим кодом. Во-вторых, почему бы Вам не запаковать файлы-примеры(небольшие) в рар и не выложить здесь? Это существенно ускорит решение, уверяю Вас.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Согласен. Попробовал создать архивы. Архив с именем "Котел промышленный" это как раз основной рабочий файл. КП-Г2 это одна из схем для работы. В основном рабочем файле, после листа отчет, надо вставить еще 7 пустых листов с названиями Теор,Резул,Выводы,Прил,Спец,СХ,Метод, наполнять их буду потом. но главное чтобы код остался рабочим, чтобы после 7 пустого листа с названием Метод, код вставлял требуемые данные. Заранее огромная благодарность.
Согласен. Попробовал создать архивы. Архив с именем "Котел промышленный" это как раз основной рабочий файл. КП-Г2 это одна из схем для работы. В основном рабочем файле, после листа отчет, надо вставить еще 7 пустых листов с названиями Теор,Резул,Выводы,Прил,Спец,СХ,Метод, наполнять их буду потом. но главное чтобы код остался рабочим, чтобы после 7 пустого листа с названием Метод, код вставлял требуемые данные. Заранее огромная благодарность.sibtherm
Sub main() Dim i&, j&, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet Set twb = ThisWorkbook On Error Resume Next Application.ScreenUpdating = False
arr1 = Array("Теор", "Резул", "Выводы", "Прил", "Спец", "СХ", "Метод") For i = 6 To 0 step -1 twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Next arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
If twb.Sheets.Count > 4 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 5 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
[/vba]
[vba]
Код
Sub main() Dim i&, j&, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet Set twb = ThisWorkbook On Error Resume Next Application.ScreenUpdating = False
arr1 = Array("Теор", "Резул", "Выводы", "Прил", "Спец", "СХ", "Метод") For i = 6 To 0 step -1 twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Next arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
If twb.Sheets.Count > 4 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 5 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
Sub main() Dim i&, j&, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet Set twb = ThisWorkbook On Error Resume Next Application.ScreenUpdating = False
arr1 = Array("Теор", "Резул", "Выводы", "Прил", "Спец", "СХ", "Метод") For i = 0 To 6 twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Next arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
If twb.Sheets.Count > 11 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 12 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
[/vba]
Я дотуда не дошел [vba]
Код
Sub main() Dim i&, j&, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet Set twb = ThisWorkbook On Error Resume Next Application.ScreenUpdating = False
arr1 = Array("Теор", "Резул", "Выводы", "Прил", "Спец", "СХ", "Метод") For i = 0 To 6 twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Next arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
If twb.Sheets.Count > 11 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 12 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
Прогресс есть! Листы остались, но вставляет их он в обратном порядке т.е за листом отчет сначала появляется Метод, СХ, Спец и т.д и делает он это через раз т.е один раз вставляет с названиями, второй раз просто с названиме Лист 146, и если повторить еще 2 раза то следующий раз пишет Лист 190 для листа Теор.
Прогресс есть! Листы остались, но вставляет их он в обратном порядке т.е за листом отчет сначала появляется Метод, СХ, Спец и т.д и делает он это через раз т.е один раз вставляет с названиями, второй раз просто с названиме Лист 146, и если повторить еще 2 раза то следующий раз пишет Лист 190 для листа Теор.sibtherm
[/vba] на обратный. А то, что через раз, так это правильно. Программа пытается присвоить листу имя, к-рое уже существует, возникает ошибка и этот шаг пропускается. Ладно, сделаю с проверкой: [vba]
Код
Sub main() Dim i&, j&, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet Set twb = ThisWorkbook On Error Resume Next Application.ScreenUpdating = False
arr1 = Array("Теор", "Резул", "Выводы", "Прил", "Спец", "СХ", "Метод") For i = 6 To 0 Step -1 Set w = Worksheets(arr1(i)) If w Is Nothing Then _ twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Set w = Nothing Next arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
If twb.Sheets.Count > 11 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 12 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
[/vba] на обратный. А то, что через раз, так это правильно. Программа пытается присвоить листу имя, к-рое уже существует, возникает ошибка и этот шаг пропускается. Ладно, сделаю с проверкой: [vba]
Код
Sub main() Dim i&, j&, sTmp$, sDir$, twb As Workbook, wb(1 To 4) As Workbook Dim arr1(), arr2(), arr(), aWS, tCalc, w As Worksheet Set twb = ThisWorkbook On Error Resume Next Application.ScreenUpdating = False
arr1 = Array("Теор", "Резул", "Выводы", "Прил", "Спец", "СХ", "Метод") For i = 6 To 0 Step -1 Set w = Worksheets(arr1(i)) If w Is Nothing Then _ twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Set w = Nothing Next arr1 = Array("Фото", "ТР", "СВ", "РК", "Эконом", "Экология", "Расчеты") arr2 = Array("Фото", "ТР", "СВ", "РК", "Граф", "Эконом", "Экология", "Расчеты")
If twb.Sheets.Count > 11 Then Application.DisplayAlerts = False For i = twb.Sheets.Count To 12 Step -1 If twb.Sheets(i).Name Like "Расчеты*" Then twb.Sheets(i).Visible = True twb.Sheets(i).Delete Next Application.DisplayAlerts = True End If
sDir = twb.Path For i = 1 To [дКотловГл].Value If IsNumeric(Range("дИсп_" & i).Text) Then If data.Cells(i * 3 + 6, "L").Text <> "-" Then sTmp = data.Cells(i * 3 + 6, "L").Text & ".xls" Set wb(i) = Workbooks(sTmp) If Err.Number = 9 Then Set wb(i) = Workbooks.Open(sDir & "\" & sTmp) End If
If sTmp = "КП - Г1.xls" Or sTmp = "КП - Дт1.xls" Then arr = arr1 Else arr = arr2 Call CopySheets(twb, wb(i), arr, i)
For Each aWS In arr twb.Sheets(aWS).Name = aWS & i twb.Sheets(aWS & i).UsedRange.Replace What:="_t", Replacement:="Гл", LookAt:=xlPart ', LookIn:=xlFormulas twb.Sheets(aWS & i).UsedRange.Replace What:="_", Replacement:="_" & i, LookAt:=xlPart ', LookIn:=xlFormulas Next For j = twb.Names.Count To 1 Step -1 If Right(twb.Names(j).Name, 1) = "_" Or Right(twb.Names(j).Name, 2) = "_t" Then twb.Names(j).Delete Next twb.BreakLink Name:=sDir & "\" & sTmp, Type:=xlExcelLinks twb.Save End If End If Next For i = 1 To [дКотловГл].Value If Not wb(i) Is Nothing Then wb(i).Close False Next
For Each w In twb.Sheets If w.Name Like "Расчеты*" Then w.Visible = xlSheetVeryHidden Next
data.Activate Application.Calculation = tCalc Application.ScreenUpdating = True End Sub
Все отлично! Листы остались, имена листов тоже, но вот порядок почему то до сих пор не поменялся. Попробовал еще в добавку поменять порядок но результата не дало. Что еще можно поправить?
Все отлично! Листы остались, имена листов тоже, но вот порядок почему то до сих пор не поменялся. Попробовал еще в добавку поменять порядок но результата не дало. Что еще можно поправить?sibtherm
arr1 = Array("Метод", "СХ", "Спец", "Прил", "Выводы", "Резул", "Теор") For i = 6 To 0 Step -1 Set w = Worksheets(arr1(i)) If w Is Nothing Then _ twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Set w = Nothing
[/vba]
В приложении фото с экрана после пары запусков кода.
Прописывал так как и говорили [vba]
Код
arr1 = Array("Метод", "СХ", "Спец", "Прил", "Выводы", "Резул", "Теор") For i = 6 To 0 Step -1 Set w = Worksheets(arr1(i)) If w Is Nothing Then _ twb.Worksheets.Add(after:=twb.Worksheets("Отчет")).Name = arr1(i) Set w = Nothing
[/vba]
В приложении фото с экрана после пары запусков кода.sibtherm
Вы сделали и то и другое. Если два раза изменить порядок на обратный, что получится? Распакуйте мой файл и запустите. Еще больше разжевать я не могу KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728