|
|
|
| Вот кусок кода : хочу удалить файл после работы пользователей (его измняют и только печатают или сохраняют со своими именами).Не срабатывает так как процесс GetActiveWindow и переход к опросу dir идут параллельно .Если задерживаю работу в отладке - то все хорошо.Как запретить переход к следующему оператору за GETActive....
Или что-то делаю не так ...
str_pr = "Excel.exe " & imf
retval = Shell(str_pr, 1)
Call GetActiveWindow
If Dir(imf) <> "" Then
Kill imf
End If
If Dir(imf) = "" Then
MsgBox (imf & "удален ")
Else
MsgBox (imf & "не был закрыт Excel и файл придется удалять вручную")
End If
End If
Exit Sub | |
|
| |
|
|
|
| можно попробовать - схитрить
Call GetActiveWindow
MsgBox"Техническое удаление...."
If Dir(imf) <> "" Then
Kill imf
End If
If Dir(imf) = "" Then
MsgBox (imf & "удален ")
Else
MsgBox (imf & "не был закрыт Excel и файл придется удалять вручную")
End If
End If
Exit Sub
|
| |
|
| |
|
|
|
| Это срабатывает для случаев когда они нормально выходят закрывая excel и файл а если переключаются то проскакивает так как файл оказывается захваченным.Хорошо бы его предварительно закрыть (проверив закрыт ли ) и после этого удалять.И еще вопрос а как закрыть GetActiveWindows т.е. процесс в данном случае EXcel .Порядок закрытий
-сначала проверить закрыт ли файл и Excel
-закрыть файл если открыт
-закрыть excel если открыт
Все понимаю но не знаю команд
Спасибо первый вариант получился Хочется чуть побольше... | |
|
| |
|
|
|
| Далек от мысли подсказать что-то дельное, но если это екселевский файл, то зачем проверять файл на его открытие? Если он открыт, то открыт и ексель. Тогда просто закрыть ексель и все тут. | |
|
| |
|
|
|
| Дык он программно всё делает , а не визуально - понял?
| |
|
| |
|
|
|
|
| получился окончательно вариант вылавливающий ошибу 53 -файл захвачен(открыт кем-то)
str_pr = "Excel.exe " & imf
str_pr = "Excel.exe " & imf
retval = Shell(str_pr, 1)
Call GetActiveWindow
MsgBox "техническое удаление" задерживает процесс и позволяет удалить если закрыли
If Dir(imf) <> "" Then
On Error GoTo err_53
Kill imf
MsgBox (imf & "удален.")
End If
End If
Exit Sub
err_53:
MsgBox (удалить невозможно т.к. файл открыт.")
Спасибо Удачи всем | |
|
| |