Вопрос № 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(){
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 03.05.2007, 12:02 Оценка за ответ: 5 Комментарий оценки: 100%-е решение. Коротко, оптимально и по существу. Спасибо!
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Mart Land!
Изучите вот это - попродвинутей будет (и по скорости тоже):
http://www.vb.kiev.ua/ref/w32api/showdoc.php?f=findfirstfile
--------- Учиться никогда не поздно. Особенно программированию!