Мяу! (Жалобно) Мяу, мяу! (Очень жалобно) Мяу, мяу, мяу! С утра бьюсь. Сначала макрос вроде работал, а потом перестал [vba]
Код
Sub New_Book() Dim New_Wb As Workbook, sh As Worksheet Dim nm As Name 'Application.ScreenUpdating = False For Each sh In ThisWorkbook.Worksheets If New_Wb Is Nothing Then sh.Copy Set New_Wb = ActiveWorkbook Else sh.Copy After:=New_Wb.Sheets(Sheets.Count) End If Next
For Each sh In New_Wb.Worksheets If sh.Name <> "сводный анализ" Then sh.UsedRange.Value = sh.UsedRange.Value End If Next On Error Resume Next For Each nm In New_Wb.Names If nm.Name <> "свд" Then nm.Delete End If Next On Error GoTo 0 iPath = ThisWorkbook.Path If Not Right$(iPath, 1) = "\" Then iPath = iPath & "\"
New_Wb.Save ' End With ThisWorkbook.Close False 'Application.ScreenUpdating = True End Sub
[/vba]
И так кручу, и эдак... Подможите, чем можите... Мяуууу!
Макрос в составе проекта, запускается из другого модуля.
PS Где ниже - хрень, там 333...3й вариант. Но тоже не работает.
Мяу! (Жалобно) Мяу, мяу! (Очень жалобно) Мяу, мяу, мяу! С утра бьюсь. Сначала макрос вроде работал, а потом перестал [vba]
Код
Sub New_Book() Dim New_Wb As Workbook, sh As Worksheet Dim nm As Name 'Application.ScreenUpdating = False For Each sh In ThisWorkbook.Worksheets If New_Wb Is Nothing Then sh.Copy Set New_Wb = ActiveWorkbook Else sh.Copy After:=New_Wb.Sheets(Sheets.Count) End If Next
For Each sh In New_Wb.Worksheets If sh.Name <> "сводный анализ" Then sh.UsedRange.Value = sh.UsedRange.Value End If Next On Error Resume Next For Each nm In New_Wb.Names If nm.Name <> "свд" Then nm.Delete End If Next On Error GoTo 0 iPath = ThisWorkbook.Path If Not Right$(iPath, 1) = "\" Then iPath = iPath & "\"
Попробуй использовать имя переменной (Filename), не совпадающее с именем параметра. Ещё я сталкивался с ситуацией, когда имя файла надо заключать в скобки (честно говоря, до конца не разобрался,что было), так что: [vba]
А зачем переоткрывать New_WB? И даже если это надо - то сначала желательно закрыть книгу после сохранения. А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался? Ещё вариант - в новой книге оставить (или добавить) макрос, который будет проверять корректность ссылок, и повесить его на открытие.
А так, без данных файла (и кому я это говорю? ) что-либо более конкретное посоветовать... Мы ж не видим, что там за имена и как построена сводная.
Попробуй использовать имя переменной (Filename), не совпадающее с именем параметра. Ещё я сталкивался с ситуацией, когда имя файла надо заключать в скобки (честно говоря, до конца не разобрался,что было), так что: [vba]
А зачем переоткрывать New_WB? И даже если это надо - то сначала желательно закрыть книгу после сохранения. А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался? Ещё вариант - в новой книге оставить (или добавить) макрос, который будет проверять корректность ссылок, и повесить его на открытие.
А так, без данных файла (и кому я это говорю? ) что-либо более конкретное посоветовать... Мы ж не видим, что там за имена и как построена сводная.AndreTM
А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался?
Именно. Остается только код модуля листа со сводной.
Почему-то решил, что для удаления ссылок нужно сначала сохранить книгу. Оказалось - был не прав. Изменяю ссылки, а потом New_Wb.SaveAs. Так что утряслось.
А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался?
Именно. Остается только код модуля листа со сводной.
Почему-то решил, что для удаления ссылок нужно сначала сохранить книгу. Оказалось - был не прав. Изменяю ссылки, а потом New_Wb.SaveAs. Так что утряслось.RAN