Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ShellExecute - ошибка при удалении файла или папки / 9 сообщений из 9, страница 1 из 1
01.10.2014, 22:20
    #38764050
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
После работы макроса в ворде функцией ShellExecute открываю созданную папку. Но если папку закрыть и попытаться ее удалить в ручную, то выходит сообщение об ошибке при удалении файла или папки. Просит закрыть программу, которая эту папку использует. Файлы удалить можно, но папку удалить не получается до тех пор пока шаблон висит подключенный, но это не вариант каждый раз переподключать шаблон.
Как очистить ShellExecute по завершению работы?
...
Рейтинг: 0 / 0
01.10.2014, 23:17
    #38764081
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
попробуйте ChDir
...
Рейтинг: 0 / 0
01.10.2014, 23:33
    #38764091
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
Shocker.Proпопробуйте ChDir
А можно поподробней.
...
Рейтинг: 0 / 0
02.10.2014, 10:36
    #38764399
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
Предположительно, вы не можете удалить папку, потому что она является текущей для ворда. Может быть поможет смена текущей папки на другую с помощью оператора ChDir
...
Рейтинг: 0 / 0
02.10.2014, 12:52
    #38764676
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
nataxa23пока шаблон висит подключенный, но это не вариант каждый раз переподключать шаблон.Что в данном случае есть "шаблон"?

nataxa23После работы макроса в ворде функцией ShellExecute открываю созданную папку.Что в данном случае есть "открываю"?

nataxa23выходит сообщение об ошибке при удалении файла или папки. Просит закрыть программу, которая эту папку использует.
Если в предыдущем вопросе ответ - отдельное окно explorer, то это нормально. И теоретически эксплорер будет держать захват до тех пор, пока не будет выгружен как минимум файл, из модуля которого выполнялся браузинг, а скорее всего - до выгрузки из памяти воркспейса, в котором был открыт документ с макросом.
...
Рейтинг: 0 / 0
02.10.2014, 18:01
    #38765222
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
Akinanataxa23пока шаблон висит подключенный, но это не вариант каждый раз переподключать шаблон.Что в данном случае есть "шаблон"?

nataxa23После работы макроса в ворде функцией ShellExecute открываю созданную папку.Что в данном случае есть "открываю"?

nataxa23выходит сообщение об ошибке при удалении файла или папки. Просит закрыть программу, которая эту папку использует.
Если в предыдущем вопросе ответ - отдельное окно explorer, то это нормально. И теоретически эксплорер будет держать захват до тех пор, пока не будет выгружен как минимум файл, из модуля которого выполнялся браузинг, а скорее всего - до выгрузки из памяти воркспейса, в котором был открыт документ с макросом.

Не совсем понятны встречные вопросы:

Мой шаблон «.dot» для MS Word.

По завершению работы макроса в самом конце моя последняя процедура выполняет последнее действие "открыть созданную новую папку", которая была создана в процессе работы всего макроса.

Если эту папку пользователь закрывает и пытается удалить с диска, то винда выдает сообщение об ошибке как на скриншоте. Ну а дальше программа Unloker предлагает свои действия.

Ругается явно на мою последнюю процедуру в которой я через "ShellExecute" запускаю открытие моей папки, потому что как показала проверка, если последнюю процедуру не использовать, то папка удаляется без всяких препятствий.
Как правильно доработать код, чтобы папка не была привязана к моему шаблону?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub ОткрытьПапку()
'Открыть/Показать папку
On Error GoTo ErrNumber
'==============================================
If strPathReSaves <> "" Then
  If Dir(strPathReSaves, vbDirectory) <> "" Then 'Если папака существует
    Call ShellExecute(0&, vbNullString, strPathReSaves, vbNullString, vbNullString, vbNormalNoFocus)
    strPathReSaves = ""
  End If
End If
'==============================================
Exit Sub
ErrNumber:
  If Error <> 0 Then
    MsgBox Err.Description, , "№ " & Err.Number & ", Процедура: «ОткрытьПапку»"
    Exit Sub
  End If
End Sub
...
Рейтинг: 0 / 0
02.10.2014, 18:12
    #38765242
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
1)
nataxa23Ругается явно на мою последнюю процедуру в которой я через "ShellExecute" запускаю открытие моей папкиЕсли вы так уверены, что дело именно в этой команде - выделите не в отдельный шаблон, где другого кода нет и воспроизведите ситуацию. Мне не удалось. Если вам удастся - приложите тестовый файл.

2) ChDir не помог?
...
Рейтинг: 0 / 0
02.10.2014, 21:07
    #38765394
nataxa23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
Shocker.Pro1)
nataxa23Ругается явно на мою последнюю процедуру в которой я через "ShellExecute" запускаю открытие моей папкиЕсли вы так уверены, что дело именно в этой команде - выделите не в отдельный шаблон, где другого кода нет и воспроизведите ситуацию. Мне не удалось. Если вам удастся - приложите тестовый файл.

2) ChDir не помог?
Агромное спасибо за наводку про то, чтобы отдельно протестить процедуру.
ChDir не использовала, но вроде бы нашла истинную причину в строке, в коде ниже указала на нее. Но если не трудно может разъясните мне подробнее почему эта строка приводила к такой ошибке:
If Dir(strPathReSaves, vbDirectory) <> "" Then
Заранее буду признательна:)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub ОткрытьПапку()
'Открыть/Показать папку
Dim objFSO As Object
On Error GoTo ErrNumber
'==============================================
If strPathReSaves <> "" Then
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  If objFSO.FolderExists(strPathReSaves) Then 'Если папака существует
'  If Dir(strPathReSaves, vbDirectory) <> "" Then '!!!Вот на эту строку он и ругался. Не совсем понятно почему???
    Call ShellExecute(0&, vbNullString, strPathReSaves, vbNullString, vbNullString, vbNormalNoFocus) 'Открыть папку с именем
    strPathReSaves = ""
  End If
  Set objFSO = Nothing
End If
'==============================================
Exit Sub
ErrNumber:
  If Error <> 0 Then
    MsgBox Err.Description, , "№ " & Err.Number & ", Процедура: «ОткрытьПапку»"
    Exit Sub
  End If
End Sub
...
Рейтинг: 0 / 0
02.10.2014, 21:11
    #38765396
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ShellExecute - ошибка при удалении файла или папки
Вы, видимо, хелп не читаете принципиально?
Очевидно, Dir("...") держит папку в ожидании Dir()
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ShellExecute - ошибка при удалении файла или папки / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]