Вопрос № 110428: Здравствуйте господа эксперты. Каждое утро стыкаюсь с необходимостью обновления БД, эта монотонная работа уже изрядно надоела, она занимает время... Ее можно оптимизировать и думаю, вы мне в этом и поможете, за что буду очень благодарен.
Есть 2 ....
Вопрос № 110.428
Здравствуйте господа эксперты. Каждое утро стыкаюсь с необходимостью обновления БД, эта монотонная работа уже изрядно надоела, она занимает время... Ее можно оптимизировать и думаю, вы мне в этом и поможете, за что буду очень благодарен.
Есть 2 .xls файла назовем их Книга 1 и Книга 2. В книгу 1 нужно каждое утро копировать изменение цен и дат с Книги 2.
Отвечает: Денисов Сергей Иванович
Здравствуйте, Sergey Ikurskiy!
Вот попробуйте макрос.
Только для простоты во второй столбик вместо дата изменения ставится текущая дата.
Приложение:
Ответ отправил: Денисов Сергей Иванович (статус: 1-ый класс)
Ответ отправлен: 22.11.2007, 15:01 Оценка за ответ: 3 Комментарий оценки: Вы сделали простое обновление, но ведь не все нужно обновлять, ячейки, где дата и цена выделена синим или другим цветом не нужно ни при каких условиях изменять.
Отвечает: Черников Игорь Владимирович
Здравствуйте, Sergey Ikurskiy!
Вставьте этот код в макросы Книги1.
Dim строка As Integer 'Объявляем переменные
Dim строка1 As Integer
Dim Код As String
Dim цена As String
Workbooks.Open Filename:="C:TempКнига2.xls" 'Открываем Книгу2 (путь к книге укажите свой)
Workbooks("Книга2.xls").Sheets("Лист1").Activate 'выбираем Лист1
строка = 1
Do
строка = строка + 1 'Счётчик строк в Книге2
Код = Workbooks("Книга2.xls").Sheets("Лист1").Range("A" & строка).Value 'узнаём код предприятия
If Код = "" Then Exit Do 'Если в ячейке пусто, то выходим из цикла
строка1 = 1
Do
строка1 = строка1 + 1 'Счётчик строк в Книге1
If Workbooks("Книга1.xls").Sheets("Лист1").Range("A" & строка1).Value = "" Then Exit Do 'Если ячейка пустая, то выходим из цикла
If Код = Workbooks("Книга1.xls").Sheets("Лист1").Range("A" & строка1).Value Then 'Если коды совпадают, то...
Workbooks("Книга1.xls").Sheets("Лист1").Activate 'выбираем Лист1
Range("C" & строка1).Select 'Выбираем ячейку, где цена
If Selection.Font.ColorIndex = 5 Then Exit Do 'Если цена выделена ярко-синим цветом, то выходим из цикла
Workbooks("Книга1.xls").Sheets("Лист1").Range("C" & строка1).Value = Workbooks("Книга2.xls").Sheets("Лист1").Range("C" & строка).Value 'исправляем цену
Workbooks("Книга1.xls").Sheets("Лист1").Range("B" & строка1).Value = Workbooks("Книга2.xls").Sheets("Лист1").Range("D1").Value 'исправляем дату
Exit Do 'выходим из цикла
End If 'Конец условия
Loop 'Конец цикла
Loop 'Конец цикла
Application.DisplayAlerts = False 'запрещаем окно сохранения книги
Workbooks("Книга2.xls").Close 'Закрываем книгу
Application.DisplayAlerts = True 'разрешаем окно сохранения
Удачи. Возникнут вопросы - пишите в личку
--------- От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 8-ой класс)
Ответ отправлен: 24.11.2007, 13:39 Оценка за ответ: 5 Комментарий оценки: Первое слово которое пришло мне на ум это "ОГО". Не ожидал такого точного и развернутого ответа. Спасибо огромное Вам, спасибо "RUSFaq".