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

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


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

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

Выпуск № 523
от 08.05.2007, 21:35

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


Вопрос № 85206: Уважаемые эксперты еще один маленький вопросик я написал макрос который запускается в экселе по кнопке работает хорошо, но дело в том что в самом макросе я делаю такую вещь: текущую книгу я сохраняю , делаю нужные мне изменения, ...
Вопрос № 85224: Уважаемые специалисты, присоветуйте что-нибудь. Задача: пройтись по каталогу(включая вложенные), выбрать все файлы по маске и вывести их список в файл. Делаю так: \\\\\\\'Maska и strFilename передаются как параметры Shell (&qu...

Вопрос № 85.206
Уважаемые эксперты
еще один маленький вопросик
я написал макрос
который запускается в экселе по кнопке
работает хорошо, но дело в том что в самом макросе я делаю такую вещь:
текущую книгу я сохраняю , делаю нужные мне изменения, а потом делаю Save As в итоге получаю следующую книгу (со следующим месяцем) в принципе все и так продолжает работать, но оказывается в той предыдущей книге макрос начинает ссылатся на следующую и если я последнюю книгу удаляю, то все предыдущие книги (месяцы) перестают работать, хотя макрос в книге есть, но кнопка почему то на нее перестает ссылаться
вопрос.
Как жестко указать ссылку на макрос чтобы она не менялась.. или предложите другой способ.
Отправлен: 03.05.2007, 10:06
Вопрос задал: HESICbITb (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: NRJ
Здравствуйте, HESICbITb!
Попробуйте сохранять макросы не в текущей книге а в личной книге макросов. Должно получиться. Удачи!
Ответ отправил: NRJ (статус: 2-ой класс)
Ответ отправлен: 03.05.2007, 10:15
Оценка за ответ: 3
Комментарий оценки:
Не совсем понял что за личная книга макросов не могли бы пояснить

Отвечает: LUDMILA_S
Здравствуйте, HESICbITb!
Сохраняйте макросы в личной книге макросов PERSONAL.xls
Проблема должна решиться.
Удачи!
Ответ отправила: LUDMILA_S (статус: 1-ый класс)
Ответ отправлен: 03.05.2007, 13:24
Оценка за ответ: 5


Вопрос № 85.224
Уважаемые специалисты, присоветуйте что-нибудь.
Задача: пройтись по каталогу(включая вложенные), выбрать все
файлы по маске и вывести их список в файл. Делаю так:
\\\\\\\'Maska и strFilename передаются как параметры
Shell ("cmd /c dir " + Maska + " /B /O:N /S > " + strFilename)
Do While Dir(strFilename) = ""
Loop
FileSize = FileLen(strFilename)
\\\\\\\'------------------------------
FileSize всегда получается равный нулю, а если выполняю пошагово в отладчике,
тогда FileSize получается реальный, отличный от нуля. Вывод: VB не ждет когда
будет записан strFilename, а надо чтобы дождался, как это решить?
Отправлен: 03.05.2007, 11:13
Вопрос задал: Mart Land (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: NRJ
Здравствуйте, Mart Land!
FSO в таких случаях помогает! Вот статья там всё написано.
http://www.citforum.ru/programming/digest/fsovb6.shtml

да ещё в проекте нада подключить references Microsoft Scripting Runtime

Приложение:

Ответ отправил: NRJ (статус: 2-ой класс)
Ответ отправлен: 03.05.2007, 11:28
Оценка за ответ: 5
Комментарий оценки:
Интересное альтернативное решение, спасибо за дополнительную информацию в статье. И все вроде бы должно работать, но... при вызове recurs fldr,
VB говорит:"Процедура не обнаружена". Сменил вызов на recurs (fldr), VB говорит:"Несоответсвие типов". Что же тут не так?

Отвечает: PsySex
Здравствуйте, Mart Land!
((http://www.rusfaq.ru/info/question/23584))
Как-то писал такую функцию. Причем она ищет файлы и по нужному имени, а также по маске(*.txt или file.*). Все найденные файлы с полным путём сохраняет в переменной 'Report'. Также фунция предусматривает поиск нужного файла и его удаление, за это отвечает переменная'BOOL'- если 'True' то фунция ищет и удаляет, если 'False' то прсто поиск. Функция имеет входные параметры 'dir_name' имя папки где осуществляется поиск и 'FindFile' искомый файл. Причем если BOOL=True и FindFile="", то функция удалит директорию 'dir_name' вместе с вложенными папками. И еще имя директории в 'dir_name' не должно заканчиваться символом ''. Пример. На форму закинте одну кнопку, для поиска.
Прога в приложении.

Приложение:

---------
Bom Shankar!

Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 03.05.2007, 11:47
Оценка за ответ: 5
Комментарий оценки:
Довольно развернутое пояснение с примером, не плохо для частого использования.

Отвечает: HookEst
Здравствуйте, Mart Land!
Именно в Вашем случае, проблема в том, что Shell выполняется асинхронно, т.е. не ждет завершения команды, а сразу передает управление. Для синхронного вызова можно например использовать WshShell.Run (если 3-й параметр True - программа приостановится до завершения команды):

'нужен Reference на Windows Script Host Object Model
Sub CreateDir(){

Dim ws As New WshShell

strFilename = "d:dir.txt"
Maska = "*.htm"

ws.Run "cmd /c dir " + Maska + " /B /O:N /S > " + strFilename, 7, True

filesize = FileLen(strFilename)

MsgBox filesize
}

Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 03.05.2007, 12:02
Оценка за ответ: 5
Комментарий оценки:
100%-е решение. Коротко, оптимально и по существу.
Спасибо!

Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Mart Land!
Изучите вот это - попродвинутей будет (и по скорости тоже):
http://www.vb.kiev.ua/ref/w32api/showdoc.php?f=findfirstfile
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (мь!тарь) (статус: Студент)
Ответ отправлен: 05.05.2007, 14:18


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 (beta) от 02.05.2007
Яндекс Rambler's Top100

В избранное