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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2012, 15:46   #1
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию поиск файлов

уважаемые форумчане! не получается решить такую задачу:

пытаюсь наладить управление программой из Excel. пишу для этого соответствующий макрос. Программа выполняет математические расчеты и генерирует файлы с результатом расширения *.re
Макрос выполняет следующие функции:

Код:
On Error Resume Next 
Kill "путь к файлу"
'удаляет результат предидушего расчета
Chdir ("путь к файлу")
Shell ("путь к файлу")
'вызывает программу, в результате чего генерируются файлы результата
'дальше Excel считывает результат и распределяет его по нужным ячейкам

1)Расчет программы занимает некоторое время примерно около секунды на моем компютере, на других может больше до 5-10 секунд.
если не выполнить предварительный поиск файла то произайдет ошибка, типа файл не найден (Файл не успевает появиться до выполнения следуюшего действия)
2) в некоторых случях когда, не правильно введены параметры для расчета, программа не выдает результат.
3)программа может сгенерировать пустой файл результата.

Пытался наладить поиск вот таким образом:
Код:
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
Dim fileEx As Boolean
fileEx = False
Do While fileEx <> True
fileEx = fs.FileExists("Путь к файлу")
loop 

Dim strFileName As String
Dim strFileTitle As String
strFileTitle = "Назваьние файла"
strFileName = " путь к файлу "
If Dir(strFileName) <> "" Then
MsgBox "файл" & strFileTitle & "наиден"
Else
MsgBox "файл" & strFileTitle & "не наиден"
End if
все работает но!!!!
если файл не сгенерировался то цикл не завершается и Excel зависает
если файл пустой то в Excel данные не поступают

Вопрос:
1) как сделать чтобы после запуска программы, Excel начинал искать файл и если не находит в течении 20 секунд писал файл не найден и изавершал макрос. А если находит начинал автоматически выполнение макроса дальше (считывание и распределение по ячейкам)
2) Если файл пустой то писал расчет не выполнен и завершал макрос.
3) как сделать чтобы не нужно было указывать конкретный путь к файлам, чтобы чтение поисходило из каталога где находится рабочая книга.
Nicolas_46 вне форума Ответить с цитированием
Старый 03.11.2012, 16:40   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

1)
Код:
Public Sub sss()
    Dim fs As Object, fileEx As Boolean, t!
    t = Timer
    Set fs = CreateObject("Scripting.FileSystemObject")
    Do While Not fileEx
        fileEx = fs.FileExists("Путь к файлу")
        DoEvents
        If Timer - t > 20 Then GoTo exxx
    Loop
    Exit Sub
exxx:
MsgBox "No file!"
End Sub
2)
Если файл существует, проверяем его содержание(тут непонятно, что за файл и какое д.б. содержание)
3)
путь книги из к-рой проверяется файл:
thisworkbook.path
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 03.11.2012, 18:38   #3
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

1) файлы результата называются REZ01.re вместо 01 может быть 02,03,04,05,06 в зависимомти от того, результаты какого расчета содержаться в нем.
Код:
Public Sub sss()
Kill "thisworkbook.path/rez*.*"
Chdir ("thisworkbook.path")
Shell ("thisworkbook.path/saprks3.exe")

    Dim fs As Object, fileEx As Boolean, t!
    t = Timer
    Set fs = CreateObject("Scripting.FileSystemObject")
    Do While Not fileEx
        fileEx = fs.FileExists("thisworkbook.path")
        DoEvents
        If Timer - t > 20 Then GoTo exxx
    Loop
    Exit Sub
exxx:
MsgBox "No file!"
End Sub
ругается на пути к файлу и программе,
как excel узнает, что именно файл rez01.re появился в каталоге где находится книга Excel?

2) В файле результата находится таблица состоящая из букв цифр и разных символов, нужно узнать есть ли в файле результата строчка "основные характеристики агрегата и корпусов" или нет. если есть то продолжить выполнение макроса, если нет то закончить его и написать "расчет отсутствует".
файлы с расширением *.re открываются блокнотом.

Последний раз редактировалось Nicolas_46; 03.11.2012 в 18:50.
Nicolas_46 вне форума Ответить с цитированием
Старый 03.11.2012, 18:50   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Цитата:
файлы результата называются REZ01.re вместо 01 может быть 02,03,04,05,06
Вот те раз! А как Эксель должен догадаться, какой именно файл Вам нужен? Можно перебрать все файлы в каталоге по именам и выяснить, что нужный есть, или его нет. Но для этого, опять же, нужно знать - что ищем.
Цитата:
как сделать чтобы не нужно было указывать конкретный путь к файлам, чтобы чтение поисходило из каталога где находится рабочая книга.
Я и показал как. Но это только путь, а не сам файл. Файл можно так:
fileEx = fs.FileExists(thisworkbook.path & "\REZ01.re")
Но опять же, что это за формат и что в нем - для меня загадка.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 03.11.2012, 20:52   #5
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

я в архиве все вложил прогу, файл Excel, все работает только заданны конкретные адреса файлов. призамене на thisworkbook.path & "\REZ01.re" ругается ((( Не знаю как исправить это.
Вложения
Тип файла: zip архив.zip (272.7 Кб, 9 просмотров)
Nicolas_46 вне форума Ответить с цитированием
Старый 03.11.2012, 22:27   #6
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

что-то видимо пиво побороло - никак не второпаю..
Я бы без тяжелой артилерии проверил наличие файла стареньким Dir.
Например так:

Код:
Sub OKRUG()
Dim S
wb = Dir(ActiveWorkbook.Path & "\REZ" & "*.re")
While Len(wb) > 0
    S = S & wb & vbCrLf
    wb = Dir
Wend
MsgBox " Рядом с файлом есть:" & vbCrLf & S
End Sub
Проверил по маске файлы рядом с активной книгой
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 03.11.2012, 22:31   #7
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Цитата:
нужно узнать есть ли в файле результата строчка "основные характеристики агрегата и корпусов" или нет
Похоже это текстовой файл. Тогда просто считать содержение всего файла в переменную:
Код:
   Dim File As String, CF As String 
   'объявим пеpеменнyю для имени файла и его cодеpжимого 
   File = "d:\ca.log" 
   'ycтановим имя файла и пyть 
   Open File For Binary As #1 
   'откpоем файл для чтения 
      CF = Input(FileLen(File), 1)   'загpyзить в пеpеменyю CF вcе cодеpжимое файла 
   Close #1 
   'закpыть файл
И примитивным Instr проверить наличие
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 04.11.2012, 01:21   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
Радость

Алгоритм таков.
Запускается программа,запоминается время старта.
В папке производится поиск самого свежего файла (позднее времени старта)+ наличие фразы "основные характеристики агрегата и корпусов" .
Если оба условия совпадают,то определяется имя файла и зеленый свет продолжению макроса.
Путь к папке можно указать

PS:.............Имя модуля
Вложения
Тип файла: rar Оболочка1.rar (54.2 Кб, 16 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.11.2012, 15:50   #9
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

Спасибо огромное! почти все заработало как надо))))
Nicolas_46 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск Файлов vasa01 БД в Delphi 7 14.05.2012 11:09
Поиск файлов prem1era Microsoft Office Access 1 23.04.2012 10:28
поиск файлов rust-02 Общие вопросы Delphi 0 03.09.2010 19:35
поиск файлов KORN Компоненты Delphi 3 12.10.2007 05:42