Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Автор Тема: Удаление связей с другими книгами после обработки макросом  (Прочитано 249 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Станиславский

  • Пользователь
  • **
  • Уважение: +2/-0
  • Оффлайн Оффлайн
  • Сообщений: 73

Доброго времени суток!
Возникла такая интересная проблема: есть рабочий файл, в который сливается куча инфы и обрабатывается макросом...дальше специфика))
так вот, после обработки определённого объёма, есть необходимость сохранить один лист из рабочего файла в виде отчёта. т.е. просто скопировать этот лист как отдельную книгу и убрать все ссылки и формулы, что собственно макрос и делает, но, когда открываешь получившийся файл, выскакивает сообщение на обновление данных. При этом все ссылки, формулы и т.д. убраны! Есть подозрение, что остаётся привязка форматов...
Вопрос - как можно убрать данное оповещение или на моменте формирования итогового отчёта убрать полностью все привязки, чтоб этого сообщения и не было.
p.s. если зайти данные-изменить связи, то, действительно, показывает, что есть связь с рабочим файлом, но изменить её или разорвать нет возможности (т.е. он как бы предлагает разорвать, но ничего не происходит)
p.p.s. макрос перемещает нужный лист копированием и созданием новой книги, выделяет всё на листе и вставляет как значения, потом даёт имя этой книге.
Записан

boa

  • Глобальный модератор
  • Постоялец
  • *****
  • Уважение: +26/-0
  • Оффлайн Оффлайн
  • Сообщений: 466
  • Доброта спасет мир...
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Станиславский

  • Пользователь
  • **
  • Уважение: +2/-0
  • Оффлайн Оффлайн
  • Сообщений: 73

Та я бы и вложил, только непонятно что вкладывать. Делаю пример файла - проблемы такой нет, а выкладывать весь файл с конфиденциальной информацией, сами понимаете :)
Разве что макрос приложу:
Sub Макрос1()
    Sheets("Отчёт").Select
    Sheets("Отчёт").Copy
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J22").Select
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:= _
        "Y:\Отчёты\Продажи февраль.xlsx", FileFormat _
        :=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
End Sub
« Последнее редактирование: 27.02.2018, 17:32:40 от vikttur »
Записан

boa

  • Глобальный модератор
  • Постоялец
  • *****
  • Уважение: +26/-0
  • Оффлайн Оффлайн
  • Сообщений: 466
  • Доброта спасет мир...

когда новая книга у вас создастся, выполните следующий макрос для разрыва связей в активновой книге
Sub DelLink()
'удаляет связи с другими книгами
    Dim WbLinks, i&
    WbLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
    If IsArray(WbLinks) Then
        For i = LBound(WbLinks) To UBound(WbLinks)
            ActiveWorkbook.BreakLink Name:=WbLinks(i), Type:=xlLinkTypeExcelLinks
        Next i
    Else
        MsgBox "В данной книге нет ссылок на другие книги"
    End If
End Sub
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Станиславский

  • Пользователь
  • **
  • Уважение: +2/-0
  • Оффлайн Оффлайн
  • Сообщений: 73

я правильно понимаю, что данный макрос проверяет есть ли ссылки на другие книги и, если есть, то удаляет их?
и его надо запускать в новой книге? но, вся суть, чтоб новая книга была без макросов ссылок и прочего...т.е. просто книга с одним листом.
я подозреваю, что, возможно, тянутся форматы таблиц (заливка, границы и шрифты)
Записан

boa

  • Глобальный модератор
  • Постоялец
  • *****
  • Уважение: +26/-0
  • Оффлайн Оффлайн
  • Сообщений: 466
  • Доброта спасет мир...

да правильно.
для того чтобы данный макрос запустить, не обязательно его копировать в новую книгу. Достаточно, что бы новая книга была активна.
а ваши "подозрения" так и останутся в силе, ибо вариантов много(и заливка, границы и шрифты тут не при чем), а истина одна(без "пациента" можно гадать долго).
Могу предположить, что у вас копируется какой-то скрытый объект имеющий ссылку на книгу-источник.
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

boa

  • Глобальный модератор
  • Постоялец
  • *****
  • Уважение: +26/-0
  • Оффлайн Оффлайн
  • Сообщений: 466
  • Доброта спасет мир...

Из персональной коллекции: Макрос копирующий выделенный диапазон в новую книгу

Sub SelectedCopyInNewBook()
' Макрос записан 27-28.10.2015 (boa)
' Копирование видимого выделенного диапазона в новую книгу
' Так же переносит масштаб и границы фриза

    Dim a As Range
    'Запоминаем масштаб окна, что бы повторить его в новой книге
    Dim ZoomAW%: ZoomAW = ActiveWindow.Zoom
    'Запоминаем название листа, что бы повторить его в новой книге
    Dim shName$: shName = ActiveWorkbook.ActiveSheet.Name
    'определяем зафризенную строку и колонку, что бы сразу зафризить их в новой книге
    Dim FreezeRow&: FreezeRow = ActiveWindow.SplitRow
    Dim i& ': i = 1
    For Each a In Selection.Rows
        If Not a.Hidden Then
            i = i + 1
            If a.Row > FreezeRow Then Exit For
            If a.Row = FreezeRow Then FreezeRow = i: Exit For
        End If
    Next
    Dim FreezeCol&: FreezeCol = ActiveWindow.SplitColumn
    Dim j& ': j = 1
    For Each a In Selection.Columns
        If Not a.Hidden Then
            j = j + 1
            If a.Column > FreezeCol Then Exit For
            If a.Column = FreezeCol Then FreezeCol = j: Exit For
        End If
    Next
   
    With Application
        .Selection.SpecialCells(xlCellTypeVisible).Copy    'копируем только видимые ячейки в выделенной области
        .Workbooks.Add(xlWBATWorksheet).Worksheets(1).Name = shName
        .ActiveSheet.Paste
        .Selection.PasteSpecial Paste:=xlPasteColumnWidths   'вставляем ширину скопированных колонок
        .Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats 'вставляем формат и значения
        .CutCopyMode = False
        With .ActiveWindow
            If FreezeRow = i Then .SplitRow = FreezeRow
            If FreezeCol = j Then .SplitColumn = FreezeCol
            If .SplitRow > 0 Or .SplitColumn > 0 Then .FreezePanes = True
            .Zoom = ZoomAW
        End With
    End With
End Sub

Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Станиславский

  • Пользователь
  • **
  • Уважение: +2/-0
  • Оффлайн Оффлайн
  • Сообщений: 73

Вот и "пациент" слегка похудевший, но сам итоговый макрос остался (кнопка "Готово")
Записан

boa

  • Глобальный модератор
  • Постоялец
  • *****
  • Уважение: +26/-0
  • Оффлайн Оффлайн
  • Сообщений: 466
  • Доброта спасет мир...

Вот и единственное решение
в менеджере имен Ctrl+F3 удалите имена или перелинкуйте на актуальный файл
или выполните макрос
Sub All_Names_Delete()
'   удалить все имена в книге
    On Error Resume Next
    Dim objName As Object
    For Each objName In ActiveWorkbook.Names
        objName.Delete
    Next objName
End Sub
« Последнее редактирование: 01.03.2018, 00:13:09 от boa »
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Станиславский

  • Пользователь
  • **
  • Уважение: +2/-0
  • Оффлайн Оффлайн
  • Сообщений: 73

УРА! Спасибо! Проблема, вроде решена (ещё есть пару таких файлов-дублёров, пойду их крушить)
p.s. вот, что значит свежий взгляд)) ещё раз спасибо!
Записан

boa

  • Глобальный модератор
  • Постоялец
  • *****
  • Уважение: +26/-0
  • Оффлайн Оффлайн
  • Сообщений: 466
  • Доброта спасет мир...

вот, что значит свежий взгляд))
Просто знаю куда смотреть ...
Вопрос можно было еще вчера закрыть...
Записан
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра

Станиславский

  • Пользователь
  • **
  • Уважение: +2/-0
  • Оффлайн Оффлайн
  • Сообщений: 73

Та я то, вроде, тоже думал, что знаю куда смотреть, когда на работе своим по экселю помогаю, но оказалось, что ещё впереди куча всего неизведанного и интересного! :)
Ещё раз спасибо!
p.s. уже "облегчил" много подобных файлов :)
Записан
 



Темы без ответов

22.05.2018 11:38 Скрипт написать который допишет данные в файл 48
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 503
14.02.2018 10:11 Подготовить читабельную отчетность по платежам 499
23.01.2018 13:46 Найти вероятность повторной покупки 515
12.01.2018 23:56 Сделать отчет на Power BI (Dashboard) 685
06.09.2017 10:43 Solver VBA не решает гиперболическое уравнение, но при этом решает гармоническое 806
17.08.2017 12:15 Гиперссылка и фильтр одновременно макрос 1008
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 2415
15.03.2017 15:45 автозамена картинок PowerPoint 1510
11.03.2017 13:43 Изменить нумерацию страниц 1738





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.183 секунд. Запросов: 123.