Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 373
от 15.09.2006, 04:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 200, Экспертов: 36
В номере:Вопросов: 3, Ответов: 5


Вопрос № 54798: Уважаемые эксперты! Помогите, пожалуйста, разобраться с проблемой. Перерыл весь рунет - ничего не помогло. Есть таблица. Во II ячейке содержаться некоторые значения. Необходимо, что бы при запуске макроса, происходило удаление строк, которые...
Вопрос № 54800: Здравствуйте уважаемые эксперты,кто может помочь, заране спасибо. 1Как средствами VB6 можно сохранить все сообщения определенной темы или даты из Outlook Express, находящиеся в одной из папок(рассылки например), в HTML-формате ? 2Вопрос:КАК? ...
Вопрос № 54811: Здравствуйте, Уважаемые Эксперты! Помогите пожалуйста с решением такого вопроса: нужно чтобы определялась частота сигнала с микрофонного входа. (например частота входного сигнала=1000 Гц, и в переменную передаеться это значение: 1000) . Желательн...

Вопрос № 54.798
Уважаемые эксперты!

Помогите, пожалуйста, разобраться с проблемой. Перерыл весь рунет - ничего не помогло. Есть таблица. Во II ячейке содержаться некоторые значения. Необходимо, что бы при запуске макроса, происходило удаление строк, которые не содержат данное значение. При запуске макроса, удаление неподходящих значений происходит, но остается первое неподходящее значение следующее после последнего подходящего. И происходит что-то вроде зацикливания. Помогает только ctrl+break

123 ЦАП
45 ЦАП
654 УФО
16 УФО
1321 УФО
ЦФО
151 ЦФО
131 УФО
1 УФО
13213 УФО
11 ПФО
ПФО
213 ПФО
132 ПФО
123 СЗФО
СЗФО
1 ПФО
331 ПФО
31 СФО
321 СФО
31 СФО
3213 ПФО
21 ПФО
21 СЗФО
21 СЗФО
3213121 УФО
3132 УФО
13 УФО
21 ЮФО
21 ЮФО

И еще вопрос: как выбрать конкретный столбец и значения, содержащиеся в нем, поставить после определенного? К примеру, требуется после Z поставить AC а потом только АА. Причем, это необходимо делать через макросы?

Заранее благодарен.

Приложение:

Отправлен: 09.09.2006, 03:58
Вопрос задал: Vadimf (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Genyaa
Здравствуйте, Vadimf!

Я встечался сам с подобной проблемой несколько раз.

Путаница при удалении возникает из-за того, что количество обрабатываемых строк меняется, и сам критерий цикла до i < ActiveWorkbook.Worksheets("Лист1 (2)").UsedRange.Rows.Count становится не совсем определенным. Можно ли уверенно сказать, что является для Excel UsedRange во время выполнения макроса после удаления нескольких строк? И какую строку будет обабатывать цикл после удаления строки и увеличения счетчика на единицу - следующую или следующую после следующей? А если при удалении уменьшить счетчик, а потом увеличить - какая строка будет обрабатываться?

Даже если после удаления уменьшать счетчик на единицу (как это органнизованно в у Вас в коде), как мне кажется, все равно остается какая-то неопределенность, "неизящность" кода. Честно говоря, я сам успел намучиться отлаживать работу цикла с удалением строк с таким подходом.

Поэтому я лично теперь придерживаюсь следующего подхода, если требуется удаление строк или столбцов на листе по критерию:

- лучше в качестве критерия в описании цикла не использовать UsedRange.Rows.Count, а переменную, которой присвоено значение UsedRange.Rows.Count до начала цикла
- и цикл нужно организовывать не с 1 до UsedRange.Rows.Count, а наоборот с UsedRange.Rows.Count до 1 (с отрицательным шагом -1) - в этом случае удаление строк смещает список только в той области листа, которая уже обработана и волноваться о значении счетчика не нужно. Код становится короче и, главное, легче для понимания и отладки.
А для переноса столбцов (если я правильно понял вопрос) можно сделать так (см. приложение):

Приложение:

---------
Всякое решение плодит новые проблемы.

Ответ отправил: Genyaa (статус: 7-ой класс)
Ответ отправлен: 09.09.2006, 09:01


Вопрос № 54.800
Здравствуйте уважаемые эксперты,кто может помочь, заране спасибо.
1Как средствами VB6 можно сохранить все сообщения определенной темы или даты из Outlook Express, находящиеся в одной из папок(рассылки например), в HTML-формате ?
2Вопрос:КАК? как запихать HTML-страницы в EXEшник(хотя бы из папки какой нибудь) и организовать только их просмортр, без использования Internet Explorer(подключение к инету не надо), средствами VB6?

P.S.прошу прощения если кому не ответил,деньги за инет имеют тенденцию быстро кончаться ;),но все советы были очень полезны
Отправлен: 09.09.2006, 05:56
Вопрос задал: Vavunchik (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Кокорич Вадим Леонидович
Здравствуйте, Vavunchik!

Отвечу на второй Ваш вопрос. Без использования Internet Explorer никакой документ в формате HTML (HTM) просмотреть нельзя, а для просмотра HTML-документа на жестком диске Вашего компьютера вовсе незачем лезть в Интернет. И более того, элементарный пример: в настройках обозревателя (панель управления) уберите поддержку показа рисунков - и Ваш рабочий стол не сможет отображать ничего, кроме ярлычков к программам. Как говорилось в одной рекламе - Internet Explorer всегда с Вами! Живым примером компилированных HTML-страниц является файл справки Windows либо любой другой программы, имеющей свою справочную систему. Отсюда вывод: пользуйтесь либо возможностью VB создавать DHTML-приложение, либо, к примеру, Html Help Workshop от Microsoft и т.п. программами.
---------
Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 6-ой класс)
Ответ отправлен: 09.09.2006, 09:33
Оценка за ответ: 3
Комментарий оценки:
Html Help Workshop это из другой оперы вроде :) CHM и HLP файлы. А про возможностью VB создавать DHTML-приложение где можно поподробней узнать, ж-но с примерчиками

Отвечает: Макаренко Е.В.
Здравствуйте, Vavunchik!
1.По первому вопросу лично видится только перекидывание вставок из одного приложения в другое. Т.е. вы подаете outlook команду на экспорт во вполне определенный файл. Потом этот файл можно переконвертировать в любой угодный для Вас формат. Например, используя ту же манипуляцию офисными приложениями, доступную из VB.

2.Запихать HTML в экзешник будет сложновато. Это ведь в самом простом случае - текст + ссылки на картинки/навороченные вставки. Все операции по проецированию этого текста/программного кода в окошки берет на себя интерпритатор браузера. Хотите - можете свой написать. :)
Однако, в простейшем случае, если нужно что-нибудь вроде просмотра таблиц, выход есть. Полагаю, вам пригодится элемент Microsoft Office SpreadSheet. Этот урезанный вариант экселя понимает CSV, HTML, XML форматы.

---------
осторожность, точность... и горит все синим пламенем! :))
Ответ отправил: Макаренко Е.В. (статус: 9-ый класс)
Ответ отправлен: 09.09.2006, 10:32

Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Vavunchik!
2. Запхните все HTML-страницы в строковой ресурс (в смысле, текст этих страниц, который видно, когда их открываешь в блокноте), потом по надобности пишите этот код в нужный файл и запускайте его в броузере (без него никак). Скомпилировав приложение, Вы получите экзешник с зашитыми в него HTML-страницами - они будут храниться как ресурс. Без извлечения никак нельзя. Хотя можно попытаться создать объект InternetExplorer.Application и записать в него текст, извлеченный из строкового ресурса - тогда никакого писания в файл не понадобится. Например, так:

Sub ee()
Dim o As Object
Dim s As String

Set o = CreateObject("InternetExplorer.Application")
'Это обязательно - иначе у Вас не будет объекта Document
o.navigate "about:blank"

s=LoadResString(101) 'Или Ваш номер - смотря как в ресурсах
o.Document.write s

'Делаем ишак видимым
o.Visible = True
'и убиваем объект - пусть живет своей жизнью
Set o = Nothing
End Sub
Хотя без ишака можно и обойтись - есть же контрол WebBrowser, хотя разница не очень большая.
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 09.09.2006, 13:57


Вопрос № 54.811
Здравствуйте, Уважаемые Эксперты!
Помогите пожалуйста с решением такого вопроса: нужно чтобы определялась частота сигнала с микрофонного входа. (например частота входного сигнала=1000 Гц, и в переменную передаеться это значение: 1000) . Желательно сделать это преобразование в VBA. Зараннее спасибо.
Отправлен: 09.09.2006, 11:01
Вопрос задал: Zdobnin Pavel N. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Кокорич Вадим Леонидович
Здравствуйте, Zdobnin Pavel N.!

VBA, конечно, может многое, но эта задача вряд ли решается с его помощью. Дело в том, что даже VB (обладающий бОльшими возможностями, нежели VBA) имеет большие трудности при работе с аппаратными устройствами ПК. В VB имеются, конечно, примеры считывания значений, скажем, с COM-порта, но они используют довольно часто дополнительные компоненты, которые надо еще найти (причем, как правило, платные). Всякий язык программирования имеет области применения, где его использование предпочтительней, и здесь наилучшим выходом будет использование Assembler или C++ по моему мнению.
---------
Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 6-ой класс)
Ответ отправлен: 09.09.2006, 19:32


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное