![]() |
Внешние связи Excel 2007
Возникла следующая проблема:
Существует основной фаил "1" Excel (в виде календаря) и ежедневно формирующийся фаил "2" (в виде цифровой таблицы), задача сделать связь, обновляющую данные в календаре из ежедневных фаилов "2", соответствующих конкретному дню месяца. Сложность заключается в том что при обновлении связей, например при закрытии фаила "1" или открытии фаила "2", данные по предыдущим дням обнуляются. Вопрос: Есть ли способ задать условие, при выполнении которого будет обновляться конкретная группа ячеек ? или может другой хитрый способ Существующая связь построена с использованием: =СЦЕПИТЬ(ссылка на фаил "2") =ЕСЛИОШИБКА(ДВССЫЛ(А1);0) |
|
Вложений: 1
Вот кусок файла "1" при одном открытом файле "2", как видно на скрине данные из сегодняшнего файла "обнулены". пока у меня мысли работают в направлении переместить данные из КВ1 в КВ3 при значении КВ1 не равном нулю, но в тоже время так что бы при обнулении КВ1 данные в КВ3 сохранялись, в таком случае не придется постоянно удерживать связь с по сути однодневными файлами
|
В любом случае вам нужно либо вручную, либо макросом разрывать связь и сохранять только значения, а не формулы.
|
Вобщем в конечном итоге, на скорую руку, получилось сделать следующим макросом:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.ScreenUpdating = False Sheets("Календарь").Select If Range("V27") = 0 Then GoTo Lastline Columns("V:Z").Select Selection.Copy Columns("AJ:AN").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Lastline: Application.ScreenUpdating = True End Sub |
Зачем выделять?
Код:
Columns("V:Z").Copy |
не знаю, я только вчера узнал что такое VBA, делал при помощи "Запись макроса" потом корректировал
спасибо за поправку : ) |
Цитата:
Код:
Application.ScreenUpdating Код:
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ Код:
.PasteSpecial Paste:=xlPasteValuesAndNumberFormats |
Цитата:
вобщем вот чего в итоге получилось: Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) |
Vison, я, конечно, не корифей VBA, но не понимаю, зачем использовать переменные вместо констант. Как вам такой код:
Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) |
Да, так наверное эффективнее, завтра попробую на практике
по поводу Код:
.Range("A1").Select к стати столкнулся со следующей проблемой: когда применил подобную схему к каждому дню календаря - то получилось достаточно много вычислений. думаю решить это с помощью функции "=ВПР", соответственно придется вносить изменения в структуру файла "2", пока что сделал так что остальные ссылки массива производят вычисления только если первая имеет положительный результат |
Время: 08:28. |
Время: 08:28.
© OSzone.net 2001-