Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 17:02   #1
bender11
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 3
По умолчанию Поиск части значения в одном из файлов

К сожалению под рукой нет самого кода.
Суть проблемы.
Есть код, который открывает 2 файла. 1 файл - шаблон, 2-файл с данными.
Код должен искать в файле данных во 2 столбце, строки с 15 по 60, ячейки, которые содеражат часть текста - "контр".
Если ячейка содержит такой текст, то в эту же строку, в которой найдена ячейка, но в столбцы 23,24,25 копируются 3 ячейки из шаблона (они всегда одинаковы).

Проблема в том, что поиск ячеек и копирование информации происходит не в тот файл.

скрит примеерно такого плана:
set shablon=openworkbook.....
set wbsrc=openworkbook.....
for k=15 to 60
if not Range(cells(k,2);cells(k,2)).find(" контр",,,xlpart) is nothing
then
shablon.worksheet("рус").range("r13 :t13").copy
activeworksheet.range.(cells(k,2);c ells(k,2)).paste
endif
next

С таким кодом все действия производятся с книгой, в которой находится макрос, а не с нужным файлом.
Как это испарвить?
bender11 вне форума Ответить с цитированием
Старый 10.07.2011, 17:25   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Замените
activeworksheet.range.(cells(k,2);c ells(k,2)).paste
На
wbsrc.range.(cells(k,2);c ells(k,2)).paste
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 10.07.2011, 17:35   #3
bender11
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Watcher_1 Посмотреть сообщение
Замените
activeworksheet.range.(cells(k,2);c ells(k,2)).paste
На
wbsrc.range.(cells(k,2);c ells(k,2)).paste
Это вторя проблема, завтра еще раз проверю, но, по-моему, я такой вариант уже пробовал, вба ввыдает ошибку.

А как сделать чтобы поиск шел по нужной мне книге, а не по той из котрой запущен макрос?
bender11 вне форума Ответить с цитированием
Старый 10.07.2011, 17:38   #4
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Цитата:
Сообщение от bender11 Посмотреть сообщение
Это вторя проблема, завтра еще раз проверю, но, по-моему, я такой вариант уже пробовал, вба ввыдает ошибку.

А как сделать чтобы поиск шел по нужной мне книге, а не по той из котрой запущен макрос?
Тогда надо так
wbsrc.sheets(1).range.(cells(k,2);c ells(k,2)).paste

Где индекс Sheets(1) меняете на номер листа где ищете
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 10.07.2011, 17:52   #5
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Может, как-то так?
Код:
.....
'set shablon=openworkbook.....
'set wbsrc=openworkbook.....
Dim CopyRng As Range
Set CopyRng = shablon.Worksheet("рус").[r13:t13]
With wbsrc.Sheets(1)
    For k = 15 To 60
        If .Cells(k, 2) Like "*контр*" Then
            CopyRng.Copy .Cells(k, 23)
        End If
    Next
End With
.....
nilem вне форума Ответить с цитированием
Старый 10.07.2011, 18:09   #6
bender11
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от nilem Посмотреть сообщение
Может, как-то так?
Код:
.....
'set shablon=openworkbook.....
'set wbsrc=openworkbook.....
Dim CopyRng As Range
Set CopyRng = shablon.Worksheet("рус").[r13:t13]
With wbsrc.Sheets(1)
    For k = 15 To 60
        If .Cells(k, 2) Like "*контр*" Then
            CopyRng.Copy .Cells(k, 23)
        End If
    Next
End With
.....
Попробую завтра таким пойти таким путем.

А можно как-то исправить ситуацию в исходном коде, например, используя activate?
bender11 вне форума Ответить с цитированием
Старый 10.07.2011, 18:45   #7
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Цитата:
Сообщение от bender11 Посмотреть сообщение
Попробую завтра таким пойти таким путем.

А можно как-то исправить ситуацию в исходном коде, например, используя activate?
Можно

set shablon=openworkbook.....
set wbsrc=openworkbook.....
for k=15 to 60
if not Range(cells(k,2);cells(k,2)).find(" контр",,,xlpart) is nothing
then
shablon.worksheet("рус").range("r13 :t13").copy
wbsrc.Activate
activeworksheet.range.(cells(k,2);c ells(k,2)).paste
endif
next
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка части текста и присвоение значения lexref Microsoft Office Excel 5 16.09.2010 13:23
Как отправит на E-mail Несколько файлов в одном письме? dolphin705 Работа с сетью в Delphi 11 14.07.2010 23:11
отсортировать по условию возрастания модуля отклонения их дробовой части от значения 0,5 MIKE11IPME Помощь студентам 4 04.05.2010 16:01
Замена части значения ячейки maksim_serg Microsoft Office Excel 4 26.03.2010 12:21
Несколько файлов в одном архиве boostman Общие вопросы Delphi 1 06.12.2009 11:22