Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление ссылок - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление ссылок (Макросы Sub)
Удаление ссылок
RAN Дата: Воскресенье, 03.11.2013, 20:21 | Сообщение № 1
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Мяу!
(Жалобно) Мяу, мяу!
(Очень жалобно) Мяу, мяу, мяу!
С утра бьюсь.
Сначала макрос вроде работал, а потом перестал
[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 = (iPath & Split(ThisWorkbook.Name, ".")(0) & "_" & Format(Date, "DD_MM_YY") & ".xlsm")
'With New_Wb
      New_Wb.SaveAs Filename:=Filename, FileFormat:=52
         
      ' выше все нормально
      ' ниже - хрень
         
     Set New_Wb = Workbooks.Open(Filename)
     a = New_Wb.FullName
'With New_Wb
'    New_Wb.SaveAs Filename:=(iPath & Split(ThisWorkbook.Name, ".")(0) & "_" & Format(Date, "DD_MM_YY") & ".xlsm"), FileFormat:=52
       New_Wb.ChangeLink Name:=ThisWorkbook.Name, NewName:=New_Wb.Name, Type:=xlExcelLinks
          
           New_Wb.Sheets("сводный анализ").PivotTables.Item(1).ChangePivotCache New_Wb. _
           PivotCaches.Create(SourceType:=xlDatabase, SourceData:="свд", Version:= _
           xlPivotTableVersion12)

          
          
       New_Wb.Save
'    End With
           ThisWorkbook.Close False
'Application.ScreenUpdating = True
End Sub
[/vba]

И так кручу, и эдак...
Подможите, чем можите...
Мяуууу!

Макрос в составе проекта, запускается из другого модуля.

PS Где ниже - хрень, там 333...3й вариант.
Но тоже не работает.


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Воскресенье, 03.11.2013, 20:33
 
Ответить
СообщениеМяу!
(Жалобно) Мяу, мяу!
(Очень жалобно) Мяу, мяу, мяу!
С утра бьюсь.
Сначала макрос вроде работал, а потом перестал
[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 = (iPath & Split(ThisWorkbook.Name, ".")(0) & "_" & Format(Date, "DD_MM_YY") & ".xlsm")
'With New_Wb
      New_Wb.SaveAs Filename:=Filename, FileFormat:=52
         
      ' выше все нормально
      ' ниже - хрень
         
     Set New_Wb = Workbooks.Open(Filename)
     a = New_Wb.FullName
'With New_Wb
'    New_Wb.SaveAs Filename:=(iPath & Split(ThisWorkbook.Name, ".")(0) & "_" & Format(Date, "DD_MM_YY") & ".xlsm"), FileFormat:=52
       New_Wb.ChangeLink Name:=ThisWorkbook.Name, NewName:=New_Wb.Name, Type:=xlExcelLinks
          
           New_Wb.Sheets("сводный анализ").PivotTables.Item(1).ChangePivotCache New_Wb. _
           PivotCaches.Create(SourceType:=xlDatabase, SourceData:="свд", Version:= _
           xlPivotTableVersion12)

          
          
       New_Wb.Save
'    End With
           ThisWorkbook.Close False
'Application.ScreenUpdating = True
End Sub
[/vba]

И так кручу, и эдак...
Подможите, чем можите...
Мяуууу!

Макрос в составе проекта, запускается из другого модуля.

PS Где ниже - хрень, там 333...3й вариант.
Но тоже не работает.

Автор - RAN
Дата добавления - 03.11.2013 в 20:21
AndreTM Дата: Вторник, 05.11.2013, 06:36 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Попробуй использовать имя переменной (Filename), не совпадающее с именем параметра.
Ещё я сталкивался с ситуацией, когда имя файла надо заключать в скобки (честно говоря, до конца не разобрался,что было), так что:
[vba]
Код
New_Wb.SaveAs Filename:=(cFileName), FileFormat:=52
[/vba]

А зачем переоткрывать New_WB? И даже если это надо - то сначала желательно закрыть книгу после сохранения.
А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался?
Ещё вариант - в новой книге оставить (или добавить) макрос, который будет проверять корректность ссылок, и повесить его на открытие.

А так, без данных файла (и кому я это говорю? :D ) что-либо более конкретное посоветовать... Мы ж не видим, что там за имена и как построена сводная.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеПопробуй использовать имя переменной (Filename), не совпадающее с именем параметра.
Ещё я сталкивался с ситуацией, когда имя файла надо заключать в скобки (честно говоря, до конца не разобрался,что было), так что:
[vba]
Код
New_Wb.SaveAs Filename:=(cFileName), FileFormat:=52
[/vba]

А зачем переоткрывать New_WB? И даже если это надо - то сначала желательно закрыть книгу после сохранения.
А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался?
Ещё вариант - в новой книге оставить (или добавить) макрос, который будет проверять корректность ссылок, и повесить его на открытие.

А так, без данных файла (и кому я это говорю? :D ) что-либо более конкретное посоветовать... Мы ж не видим, что там за имена и как построена сводная.

Автор - AndreTM
Дата добавления - 05.11.2013 в 06:36
RAN Дата: Вторник, 05.11.2013, 10:33 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался?

Именно. Остается только код модуля листа со сводной.

Почему-то решил, что для удаления ссылок нужно сначала сохранить книгу. Оказалось - был не прав. Изменяю ссылки, а потом New_Wb.SaveAs. Так что утряслось.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
А зачем в начале такой метод копирования книги? Чтобы код VBA не скопировался?

Именно. Остается только код модуля листа со сводной.

Почему-то решил, что для удаления ссылок нужно сначала сохранить книгу. Оказалось - был не прав. Изменяю ссылки, а потом New_Wb.SaveAs. Так что утряслось.

Автор - RAN
Дата добавления - 05.11.2013 в 10:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление ссылок (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!