| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > обновление связей только в выделенных ячейках |
| Автор: sergei3000 1.3.2006, 09:23 |
| никак не могу понять, возможно ли (а если возможно, то как) в exel сделать макрос, который обновлял бы внешние связи (с другими файлами excel через формулы) только в выделенных ячейках. ведь через стандартные опции программы можно обновить или все связи, или с отдельными файлами. а что делать, если мне нужно обновить связи не совсем файлом, на который есть ссылки в моём документе, а только те, что находятся в определённых ячейках? у меня есть масса тяжёлых и взаимосвязанных файлов, для работы с которыми мне это просто необходимо. например, чтобы вычислить только выделенные ячейки, достаточно простого selection.calculate. есть методы update и refresh, но при попытке их использования выдаётся сообщение о том, что с этим объектом (selection) они не работают. |
| Автор: Akina 1.3.2006, 10:07 |
| Пороть! Розгами! Бездельник! Что, трудно набрать "обновление связей" в строке поиска по встроенной справке Экселя??? |
| Автор: sergei3000 2.3.2006, 08:12 |
| очень смешно. а толку? незачот, короче. стал бы я сюда обращаться, если бы справку сначала не перерыл??? |
| Автор: Akina 2.3.2006, 09:36 | ||
Да он еще и слепой... ну на..
Предвосхищая следующий вопрос: Сервис-Макрос-Запись |
| Автор: Twwi 2.3.2006, 11:31 |
| Akina, Вы не поняли, нужно из одного источника не все формулы обновить. К сожалению, чтобы сделать напрямую ничего мне не удалось найти. Можно поизголяться.. В книге, в стороне от рабочей области создать два вспомогательных столбца. Первыйь - текущие значения формул (ну или предыдущее обновление), второй - формулы-линки на другие источники. Формулы в рабочей области будут ссылаться на первый столбец. Далее, на открытие книги написать макрос, который будет переписывать текущие значения в первый столбец. ДАлее обновиться - обновиться второй столбец - рабочая область все еще будет ссылаться на значения до обновления. Теперь написать макрос который по выделенным ячейкам определит от каких значений из первого столбца они зависят и переписать эти значения (в 1-м столбце) значениями из второго. Но это называется изголяться. Скорее всего надо подумать над изменением структуры книг. Или может еще кто-нибуть что-нибудь подскажет.. |
| Автор: Akina 2.3.2006, 11:49 |
| Я все прекрасно понял. первый шаг - надо научиться обновлять только выбранные связи. это описано цитатой из хелпа. второй шаг - надо научиться делать это программно. это делается записью макроса выборочного обновления и последующим изучением полученного кода. Остается сделать макрос под свои данные и запихать его в XLStart или навесить на кнопку. |
| Автор: sergei3000 3.3.2006, 06:54 |
| в том-то и дело, что не понял. так что слепой здесь не я. если не понятно из моего первого поста, объясняю на примере (упрощенном, естессно). есть ячейки A1, A2, А3, В1, В2, В3. А1, А2, А3 ссылаются на ячейки в файле "книга1.xls"; ячейки В1, В2, В3 ссылаются на ячейки в файле "книга2.xls". мне нужно обновить только ячейки А1 и А2. ячейку А3 обновлять не нужно. если я сделаю это по цитируемой вами справке, обновятся все связи с файлом "книга1.xls", в том числе и А3, а это совсем не то, что нужно. это точно. рабочие области нередко изменяются или дополняются. каждый раз создавать вспомогательные ячейки, мягко говоря, не очень хочется. да и сейчас уже создано такое количество книг, что страшно подумать, сколько времени понадобится, чтобы переделать все внешние связи в них. так что и с изменением структуры книг тоже не получается |
| Автор: Twwi 3.3.2006, 10:14 | ||
можно еще помучиться и определить залинкованые ячейки по формулам (ADDRESS), тогда на них не будет влиять сдвиг ряда, ячейки.. Но если часто требуется добавление новый ячеек, придется взять карандаш с листочком и подумать у кого откуда ноги растут p.s. Cell.Update такого свойства к сожалению нет |
| Автор: sergei3000 3.3.2006, 12:05 |
| не получается. пишет "Wrong number of arguments or invalid property assignment". дебаггер при этом высвечивает первую строчку кода. а с объектами Cells и Selection метод Update, кажется, не работает 2 Twii что там? почему-то не скачивается, на странице надпись о том, что для гостей это недоступно, хотя я до этого залогинился |
| Автор: Akina 3.3.2006, 13:33 |
| sergei3000, в качестве бреда - попробуй с ячейки в selection сперва считать формулу, а потом переприсвоить... просто не помню - при ссылке на другую книгу выполняется ли немедленный пересчет... |
| Автор: Twwi 3.3.2006, 16:14 |
| Прикрепляю доделанный файл, там готовый макрос, который на селекшен обновляет предыдущие записи обновленными. На блюдечке с голубой каемочкой добавлено - колонка с формулами ADDRESS вообще не нужна. прошу прощения, температура 38 |
| Автор: sergei3000 4.3.2006, 16:55 |
| 2 Twii спасибо не удаёца скачать файл отсюда. если можешь, отправь, плиз, на [email protected]. спасибо ещё раз |
| Автор: sergei3000 6.3.2006, 07:37 | ||||
а ларчик просто открывался!
спасибо за идею! оказывается, достаточно всего лишь
2 Twwi тоже большое спасибо за участие! |