powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
35 сообщений из 35, показаны все 2 страниц
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37771512
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в Visual Basic вообще никак. Не знаю с какой стороны подступиться.
Так что заранее прошу прощения за вопрос.

У меня есть документ Excel. Его мы ведем для пользователей занимающихся задачей связанной с приемом БД.
В него я в Листе "ПРИШЕДШИЕ БАЗЫ" записываю БД которые к нам пришли (первый столбец - имя БД).
БД обрабатываются.
После обработки имя БД записывается в таблицу BD_Processed . BDNAME базы Base_001 .
Но они остаются в этом списке Excel который пользуют пользователи и начальники. Я уже задолбался просто вручную удалять. То есть я сначала выбираю весь столбец с именами БД в Excel копирую его в MS SQL, потом пишу запрос о том кто из этих БД загружен. Выбираю. Копирую их в Excel и начинаю удалять....


Вопрос - как написать макрос который удалял бы те строки листа "ПРИШЕДШИЕ БАЗЫ" в которых значение первого столбца присутствует в базе Base_001 в таблице BD_Processed имя поля BDNAME .


Заранее всем спасибо за ответы и ещё раз прошу прощения за вопрос.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37771607
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну хоть кто-нибудь, хоть что-нибудь.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37771759
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор Держимордов, как вар-т можно коннектиться из Экселя к БД, используя ADO, скидывать в рекордсет строки из таблицы BD_Processed.BDNAME и далее создать массив с помощью метода рекордсета GetRows. И потом как собака циклом бегать по строкам листа эксельной книги и проверять, что значение в ячейке 1-го столбца равно соотв-му эл-ту массива. Если равно, то удалять всю строку.
Но это какое-то нехорошее решение.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37771799
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кладовщикМордор Держимордов, как вар-т можно коннектиться из Экселя к БД, используя ADO, скидывать в рекордсет строки из таблицы BD_Processed.BDNAME и далее создать массив с помощью метода рекордсета GetRows. И потом как собака циклом бегать по строкам листа эксельной книги и проверять, что значение в ячейке 1-го столбца равно соотв-му эл-ту массива. Если равно, то удалять всю строку.
Но это какое-то нехорошее решение.
-----
Не люблю Progress OpenEdge.


Бляха. Я то думал мне тут знающие люди на коленке за 2 минуты напишут.

Неужто придётся самому в VB разбираться...
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37771857
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор Держимордов,

О каком объеме данных идет речь? От этого будет зависеть оптимальный путь.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37771860
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор ДержимордовНу хоть кто-нибудь, хоть что-нибудь.

Мордор ДержимордовЯ то думал мне тут знающие люди на коленке за 2 минуты напишут.Ага, на вопрос, заданный ночью, к утру обязательно кто-то что-то напишет.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773242
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМордор Держимордов,

О каком объеме данных идет речь? От этого будет зависеть оптимальный путь.


Объёмы минимальны.

На листе "ПРИШЕДШИЕ БАЗЫ" обычно не содержится более 60 строк.
Таблица BD_Processed сейчас содержит 8126 записей, прирост за день не более 30 записей.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773244
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro+
Мордор ДержимордовНу хоть кто-нибудь, хоть что-нибудь.

Мордор ДержимордовЯ то думал мне тут знающие люди на коленке за 2 минуты напишут.Ага, на вопрос, заданный ночью, к утру обязательно кто-то что-то напишет.

Ну извиняйте. На границе с Северной Кореей живём.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773252
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор ДержимордовShocker.ProМордор Держимордов,

О каком объеме данных идет речь? От этого будет зависеть оптимальный путь.


Объёмы минимальны.

На листе "ПРИШЕДШИЕ БАЗЫ" обычно не содержится более 60 строк.
Таблица BD_Processed сейчас содержит 8126 записей, прирост за день не более 30 записей.

Длина имени БД = 30 символов.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773272
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор ДержимордовБляха. Я то думал мне тут знающие люди на коленке за 2 минуты напишут.


Позвольте, а что заставило вас так думать?У вас тут родственники, или вам тут должны?

Лично я, как человек знающий, был бы бесконечно счастлив обсудить, например, проблемы управления секционированием БД, или обратную запись в куб. А вот кто и что задолбался вручную делать - думаю, не только мне не интересно.


Мордор ДержимордовНеужто придётся самому в VB разбираться...

Это лучшее, что вы можете сделать. Если нет, значит вам это не нужно.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773319
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenHimМордор ДержимордовБляха. Я то думал мне тут знающие люди на коленке за 2 минуты напишут.


Позвольте, а что заставило вас так думать?У вас тут родственники, или вам тут должны?

Лично я, как человек знающий, был бы бесконечно счастлив обсудить, например, проблемы управления секционированием БД, или обратную запись в куб. А вот кто и что задолбался вручную делать - думаю, не только мне не интересно.


Мордор ДержимордовНеужто придётся самому в VB разбираться...

Это лучшее, что вы можете сделать. Если нет, значит вам это не нужно.

И что это было???
Нет желания сказать чего по делу, но поумничать, поменторствовать - пожалуйста.
Время то зачем тратить?
Идите обсуждать проблемы секционирования БД!
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773322
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор ДержимордовТо есть я сначала выбираю весь столбец с именами БД в Excel копирую его в MS SQL, потом пишу запрос о том кто из этих БД загружен. Выбираю. Копирую их в Excel и начинаю удалять....ну наверное самое логичное - выгрузить список баз в таблицу на сервере (это можно и автоматом делать) и запросом сравнить. А потом два варианта. Можно, получив список строк под удаление, просто удалить их макросом. А моет быть проще будет получить запросом список строк, которые должны остаться и просто вставить результат в лист, предварительно его очистив. Но тут, не видя примера листа, судить сложно.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773325
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор ДержимордовИ что это было???
Нет желания сказать чего по делу, но поумничать, поменторствовать - пожалуйста.
Время то зачем тратить?
Идите обсуждать проблемы секционирования БД!
вы сами своим тоном на это напросились. Хотите помощи, не ведите себя как быдло.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773341
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Нафига тебе пример? Работаем с одним столбцом. Получаем список уникальных значений в столбце, сравниваем с таблицей в базе, по результатам просто удаляем строки по наличию какого-то значения в столбце
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773343
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro+
Мордор ДержимордовИ что это было???
Нет желания сказать чего по делу, но поумничать, поменторствовать - пожалуйста.
Время то зачем тратить?
Идите обсуждать проблемы секционирования БД!
вы сами своим тоном на это напросились. Хотите помощи, не ведите себя как быдло.

Я в VB не то что быдло - животное.

Я просто не совсем понимаю - человек зашёл и так свысока рассказывает мне о том чего хочет/не хочет, какие его проблемы волнуют.
Так я и не против. Пусть заводит отдельный топик.

Думал это просто, а оказалось... Вообщем начальство было недовольно, што его просьба не делается за день, расстроилось и пока дало время на изучение...



С другой стороны в ветке MS SQL я совершенно свободно с людьми обсуждал и код выкладывали.
За полгода там понаблатыкался с нуля до уровня который необходим на рабочем месте.
А тут - быдло. Ну так знамо дело - монастырь другой. :)
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773344
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносShocker.Pro,

Нафига тебе пример? Работаем с одним столбцом. Получаем список уникальных значений в столбце, сравниваем с таблицей в базе, по результатам просто удаляем строки по наличию какого-то значения в столбце

Хотя бы примерно могете накидать как это в VB?
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773346
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор Держимордов,

Самокритика это хорошо, но вступать в перепалки с другими участниками плохо сказывается на нервных клетках :)
Как у нас говорят: "Не говори мне что мне нужно делать, и я не скажу тебе куда тебе нужно идти" :)

А как у вас с политической обстановкой на границе???
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773347
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мордор ДержимордовХотя бы примерно могете накидать как это в VB?

Могу, дай на работу приехать :)
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773349
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, какая версия офиса?
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773351
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносМордор Держимордов,

Самокритика это хорошо, но вступать в перепалки с другими участниками плохо сказывается на нервных клетках :)
Как у нас говорят: "Не говори мне что мне нужно делать, и я не скажу тебе куда тебе нужно идти" :)

А как у вас с политической обстановкой на границе???

Дорогой товарищ, у нас примерно так же как и у вас, президентов то у нас как и у вас вроде - двое.

Ну и люди активно валят кто куда. А взамен их везут этнических брюнетов. Грустно, но это оффтопик. :)
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773352
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносКстати, какая версия офиса?

2003
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773357
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносМордор ДержимордовХотя бы примерно могете накидать как это в VB?

Могу, дай на работу приехать :)

Негодяй, я в Киеве родился!!! Родители насильно вывезли в бессознательном возрасте. И тут это... северокорейские ракеты в море падают, японцы взрывают атомные Фукусимки, а как иногда вечером идёшь - воздух рыжего цвету - а потому как из Китая надуло. Тут ещё будут свои оранжевые революции...
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773502
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дорогой Мордор Держимордов,


Мордор ДержимордовИ что это было???

Постараюсь объяснить как можно более доступно.

Мордор ДержимордовДумал это просто, а оказалось...
На одно это вам понадобилось 1,5 дня - значит, вы не владете своим предметом
Мордор ДержимордовЯ в VB не то что быдло - животное.
Значит вам нужно готовое решение, которое к томуже ещё придётся и разжёвывать

Насколько понимаю, столь бурные эмоции в вас вызвали мои примеры обсуждений.
Так вот это - метафора, и суть её в том, что прежде чем давать какие-то советы,
нужна хоть какая-то уверенность, что вы их поймёте.
Судя по вашей манере общения, на это расчитывать не приходится.

Как и вы в своей ветке, по мере сил своих, я стараюсь помочь.Но только тем, кому можно помочь.
Возможно, такая выборочность и заслуживает упрёка, во всяком случае мне это безразлично.

Мордор ДержимордовВообщем начальство было недовольно, што его просьба не делается за день, расстроилось и пока дало время на изучение...
Остаётся пожелать удачи вашему начальству.
Ну и вам - удачи
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773561
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenHimДорогой Мордор Держимордов,

+

Мордор ДержимордовИ что это было???

Постараюсь объяснить как можно более доступно.

Мордор ДержимордовДумал это просто, а оказалось...
На одно это вам понадобилось 1,5 дня - значит, вы не владете своим предметом
Мордор ДержимордовЯ в VB не то что быдло - животное.
Значит вам нужно готовое решение, которое к томуже ещё придётся и разжёвывать

Насколько понимаю, столь бурные эмоции в вас вызвали мои примеры обсуждений.
Так вот это - метафора, и суть её в том, что прежде чем давать какие-то советы,
нужна хоть какая-то уверенность, что вы их поймёте.
Судя по вашей манере общения, на это расчитывать не приходится.

Как и вы в своей ветке, по мере сил своих, я стараюсь помочь.Но только тем, кому можно помочь.
Возможно, такая выборочность и заслуживает упрёка, во всяком случае мне это безразлично.

Мордор ДержимордовВообщем начальство было недовольно, што его просьба не делается за день, расстроилось и пока дало время на изучение...
Остаётся пожелать удачи вашему начальству.
Ну и вам - удачи


Что вам не ймётся?
Какое готовое решение?
Столько буков и ни о чём! Я уже понял! Понял! Вы - москвич(ка), профессионал(ка).
От вас ничего не ожидаю - просто не пиши сюда пожалуйста.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773595
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносShocker.Pro,

Нафига тебе пример? Работаем с одним столбцом. Получаем список уникальных значений в столбце, сравниваем с таблицей в базе, по результатам просто удаляем строки по наличию какого-то значения в столбцеЕсли у него там форматирование, оформления и прочие навороты, тогда не получится тупо вставить результирующий текст из базы. То есть я хотел немножко упростить систему и не использовать цикл удаления строк. Но так как автор никак не прокомментировал мое предложение, тогда можно и в цикле.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773620
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИгорь ГорбоносShocker.Pro,

Нафига тебе пример? Работаем с одним столбцом. Получаем список уникальных значений в столбце, сравниваем с таблицей в базе, по результатам просто удаляем строки по наличию какого-то значения в столбцеЕсли у него там форматирование, оформления и прочие навороты, тогда не получится тупо вставить результирующий текст из базы. То есть я хотел немножко упростить систему и не использовать цикл удаления строк. Но так как автор никак не прокомментировал мое предложение, тогда можно и в цикле.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773713
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и?
Вы тонко намекаете, что не умеете работать с ADODB? - не верю, поскольку ведь данные вы как-то "заливаете в БД". Или вы не знаете, как удалить строчку на листе Excel? - Sheets("ПРИШЕДШИЕ БАЗЫ").Rows(32).Delete Shift:=xlUp
Или не знаете, как сравнить два списка наименований?
Что не получается-то?
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773719
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Я так понимаю, автор делает заливку файла средствами DTS (то есть мастером самого MSSQL)
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773739
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Мордор Держимордов
> .JPG

От тебя просили обычный файл екселя, а не картинку
Поставь имя своего сервера
C учетом картинки - нужно добавить проверку на длину строки sXml она не должна превышать 8000 символов готового XML'я
или переделать запрос так, чтобы открывался сам файл через OpenRowSet и сравнивались значения.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
Option Explicit
Dim cmd As New ADODB.Command


Sub DeleteRows()
'
' Макрос1 Макрос
' Макрос записан 14.01.2009 (user)
'

'
Dim sCurrentFiltRange As String, sXml As String, sSql As String
Dim r As Range
Dim shUnique As Worksheet, sh As Worksheet, w As Workbook, w1 As Workbook
Dim vGroup As Variant

On Error GoTo labErr

Set w = Application.ActiveWorkbook
Set sh = Application.ActiveSheet  ' лист на котором нужно удалять строки
If sh.AutoFilter Is Nothing Then
    MsgBox "Установите автофильтр"
    Exit Sub
End If

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

sCurrentFiltRange = sh.AutoFilter.Range.Address

Set w1 = Application.Workbooks.Add
Application.DisplayAlerts = False
Set shUnique = CheckSheet(w1, "Уникальные")
' Получаем список уникальных данных из столбца
Set r = w1.Worksheets("Уникальные").Range("a1")
sh.Range("A:A").AdvancedFilter xlFilterCopy, , r, True
DoEvents
' Получаем уникальный список в массив для обработки
vGroup = r.Range("a2:F" + CStr(r.SpecialCells(xlCellTypeLastCell).Row)).Value2
' Книга больше не нужна, закрываем
Set r = Nothing
w1.Close False
Set w1 = Nothing
Application.DisplayAlerts = True

' Строим из массива данных XML, который запросим на сервере и по результатам получим что удалять
sXml = "<?xml version = ""1.0"" encoding=""Windows-1251"" standalone=""yes""?><VBA><kk>"
sXml = sXml & Join(vGroup, "</a><a>")
sXml = Left(sXml, Len(sXml) - 3) & "</kk></VBA>"

Dim rs As Recordset
Set rs = CheckDataFromSQL(sXml)
' Теперь беГим циклом по рекордсету, применяем автофильтр и видимые строки удаляем
rs.MoveFirst
While Not rs.EOF
    With sh.Range(sCurrentFiltRange)
        ' Работаем с автофильтром
        .AutoFilter Field:=1, Criteria1:=rs.fields(0).Value
        DoEvents
        ' Удаляем видимые строки
        .SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
    rs.MoveNext
Wend
rs.Close
Set rs = Nothing
Set cmd = Nothing
    MsgBox "Закончили!"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
labErr:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Что-то не получилось, данные не обработаны! Ошибка - " & Err.Description, vbCritical + vbOKOnly
End Sub

Private Function CheckSheet(w As Workbook, sName As String, Optional bCreate As Boolean = True) As Worksheet
Dim b As Boolean
b = Application.DisplayAlerts
Application.DisplayAlerts = False
On Error GoTo labErr
' Если есть лист пытаемся удалить его
w.Sheets(sName).Delete
If bCreate Then
' Если удалили и нужно создавать, создаем и возвращаем
    Set CheckSheet = w.Sheets.Add
    CheckSheet.Name = sName
End If
Application.DisplayAlerts = b
Exit Function
labErr:
Application.DisplayAlerts = b
If bCreate Then
' Если нужно создавать, создаем и возвращаем
    Set CheckSheet = w.Sheets.Add
    CheckSheet.Name = sName
End If
End Function

Private Function CheckDataFromSQL(sXml As String) As Recordset
Dim sql As String
sql = "DECLARE @idoc INT " & vbCrLf _
    & "EXEC sp_xml_preparedocument @idoc OUTPUT, " & vbCrLf _
    & "     ? " & vbCrLf _
    & "      " & vbCrLf _
    & "SELECT distinct dp.BDNAME " & vbCrLf _
    & "FROM   Base_001.dbo.BD_Processed dp " & vbCrLf _
    & "       INNER JOIN OPENXML(@idoc, 'VBA/kk', 2) " & vbCrLf _
    & "            WITH(a VARCHAR(255)) a ON dp.BDNAME = a.a " & vbCrLf _
    & " " & vbCrLf _
    & "EXEC sp_xml_removedocument @idoc"
Dim prm As ADODB.Parameter
' Define a Command object for a stored procedure.
cmd.ActiveConnection = "Provider=sqloledb;Data Source=_TVOI_SERVER_;Initial Catalog=Base_001;Integrated Security=SSPI;"
cmd.CommandText = sql
cmd.CommandType = adCmdText
cmd.CommandTimeout = 15
' Set up new parameter for the stored procedure.
Set prm = cmd.CreateParameter("sxml", adVarChar, adParamInput, 8000, sXml)
cmd.Parameters.Append prm
' Create a record set by executing the command.
Set CheckDataFromSQL = cmd.Execute
' Тут можно сделать обработку ошибок, но под рукой нет, а искать нет времени. Если нужно сам разберёшся
End Function



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773745
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант без программирования: сделать лист, вывести на него данные из запроса к базе.
На листе со списком баз сделать столбец, в котором прописать функцию ВПР(), ну и далее либо условное форматирование, либо фильтр.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773747
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Игорь Горбонос

Ну и как обычно:
После сборки обработать напильником (с) Инструкция!

:)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773776
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMНу и?
Вы тонко намекаете, что не умеете работать с ADODB? - не верю, поскольку ведь данные вы как-то "заливаете в БД". Или вы не знаете, как удалить строчку на листе Excel? - Sheets("ПРИШЕДШИЕ БАЗЫ").Rows(32).Delete Shift:=xlUp
Или не знаете, как сравнить два списка наименований?
Что не получается-то?

Я вчера перед написанием поста узнал о такой штуке: Сервис -> Макрос -> Начать запись
:)

Я с VB, экселем никак до этого не пересекался, админю MS SQL, пишу скриптики на нём же.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773780
Фотография Мордор Держимордов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос> Автор: Мордор Держимордов
> .JPG

От тебя просили обычный файл екселя, а не картинку
Поставь имя своего сервера
C учетом картинки - нужно добавить проверку на длину строки sXml она не должна превышать 8000 символов готового XML'я
или переделать запрос так, чтобы открывался сам файл через OpenRowSet и сравнивались значения.
+
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
Option Explicit
Dim cmd As New ADODB.Command


Sub DeleteRows()
'
' Макрос1 Макрос
' Макрос записан 14.01.2009 (user)
'

'
Dim sCurrentFiltRange As String, sXml As String, sSql As String
Dim r As Range
Dim shUnique As Worksheet, sh As Worksheet, w As Workbook, w1 As Workbook
Dim vGroup As Variant

On Error GoTo labErr

Set w = Application.ActiveWorkbook
Set sh = Application.ActiveSheet  ' лист на котором нужно удалять строки
If sh.AutoFilter Is Nothing Then
    MsgBox "Установите автофильтр"
    Exit Sub
End If

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

sCurrentFiltRange = sh.AutoFilter.Range.Address

Set w1 = Application.Workbooks.Add
Application.DisplayAlerts = False
Set shUnique = CheckSheet(w1, "Уникальные")
' Получаем список уникальных данных из столбца
Set r = w1.Worksheets("Уникальные").Range("a1")
sh.Range("A:A").AdvancedFilter xlFilterCopy, , r, True
DoEvents
' Получаем уникальный список в массив для обработки
vGroup = r.Range("a2:F" + CStr(r.SpecialCells(xlCellTypeLastCell).Row)).Value2
' Книга больше не нужна, закрываем
Set r = Nothing
w1.Close False
Set w1 = Nothing
Application.DisplayAlerts = True

' Строим из массива данных XML, который запросим на сервере и по результатам получим что удалять
sXml = "<?xml version = ""1.0"" encoding=""Windows-1251"" standalone=""yes""?><VBA><kk>"
sXml = sXml & Join(vGroup, "</a><a>")
sXml = Left(sXml, Len(sXml) - 3) & "</kk></VBA>"

Dim rs As Recordset
Set rs = CheckDataFromSQL(sXml)
' Теперь беГим циклом по рекордсету, применяем автофильтр и видимые строки удаляем
rs.MoveFirst
While Not rs.EOF
    With sh.Range(sCurrentFiltRange)
        ' Работаем с автофильтром
        .AutoFilter Field:=1, Criteria1:=rs.fields(0).Value
        DoEvents
        ' Удаляем видимые строки
        .SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With
    rs.MoveNext
Wend
rs.Close
Set rs = Nothing
Set cmd = Nothing
    MsgBox "Закончили!"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
labErr:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
MsgBox "Что-то не получилось, данные не обработаны! Ошибка - " & Err.Description, vbCritical + vbOKOnly
End Sub

Private Function CheckSheet(w As Workbook, sName As String, Optional bCreate As Boolean = True) As Worksheet
Dim b As Boolean
b = Application.DisplayAlerts
Application.DisplayAlerts = False
On Error GoTo labErr
' Если есть лист пытаемся удалить его
w.Sheets(sName).Delete
If bCreate Then
' Если удалили и нужно создавать, создаем и возвращаем
    Set CheckSheet = w.Sheets.Add
    CheckSheet.Name = sName
End If
Application.DisplayAlerts = b
Exit Function
labErr:
Application.DisplayAlerts = b
If bCreate Then
' Если нужно создавать, создаем и возвращаем
    Set CheckSheet = w.Sheets.Add
    CheckSheet.Name = sName
End If
End Function

Private Function CheckDataFromSQL(sXml As String) As Recordset
Dim sql As String
sql = "DECLARE @idoc INT " & vbCrLf _
    & "EXEC sp_xml_preparedocument @idoc OUTPUT, " & vbCrLf _
    & "     ? " & vbCrLf _
    & "      " & vbCrLf _
    & "SELECT distinct dp.BDNAME " & vbCrLf _
    & "FROM   Base_001.dbo.BD_Processed dp " & vbCrLf _
    & "       INNER JOIN OPENXML(@idoc, 'VBA/kk', 2) " & vbCrLf _
    & "            WITH(a VARCHAR(255)) a ON dp.BDNAME = a.a " & vbCrLf _
    & " " & vbCrLf _
    & "EXEC sp_xml_removedocument @idoc"
Dim prm As ADODB.Parameter
' Define a Command object for a stored procedure.
cmd.ActiveConnection = "Provider=sqloledb;Data Source=_TVOI_SERVER_;Initial Catalog=Base_001;Integrated Security=SSPI;"
cmd.CommandText = sql
cmd.CommandType = adCmdText
cmd.CommandTimeout = 15
' Set up new parameter for the stored procedure.
Set prm = cmd.CreateParameter("sxml", adVarChar, adParamInput, 8000, sXml)
cmd.Parameters.Append prm
' Create a record set by executing the command.
Set CheckDataFromSQL = cmd.Execute
' Тут можно сделать обработку ошибок, но под рукой нет, а искать нет времени. Если нужно сам разберёшся
End Function






СПАСИБО. Завтра поразбираюсь.
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773803
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Мордор Держимордов

Да сори не заметил:
Код: vbnet
1.
2.
' Получаем уникальный список в массив для обработки
vGroup = r.Range("a2:F" + CStr(r.SpecialCells(xlCellTypeLastCell).Row)).Value2


здесь должно Не по столбец F, а в столбце A, т.е.
Код: vbnet
1.
2.
' Получаем уникальный список в массив для обработки
vGroup = r.Range("a2:A" + CStr(r.SpecialCells(xlCellTypeLastCell).Row)).Value2



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
    #37773931
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[youtube=http://www.youtube.com/watch?v=-MoF3KxDCMY]

Обидно, что становимся базарными бабами!
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление строк в EXCEL первый параметр столбец которых присутствует в таблице MS SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]