powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ShellExecute - ошибка при удалении файла или папки
9 сообщений из 9, страница 1 из 1
ShellExecute - ошибка при удалении файла или папки
    #38764050
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После работы макроса в ворде функцией ShellExecute открываю созданную папку. Но если папку закрыть и попытаться ее удалить в ручную, то выходит сообщение об ошибке при удалении файла или папки. Просит закрыть программу, которая эту папку использует. Файлы удалить можно, но папку удалить не получается до тех пор пока шаблон висит подключенный, но это не вариант каждый раз переподключать шаблон.
Как очистить ShellExecute по завершению работы?
...
Рейтинг: 0 / 0
ShellExecute - ошибка при удалении файла или папки
    #38764081
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте ChDir
...
Рейтинг: 0 / 0
ShellExecute - ошибка при удалении файла или папки
    #38764091
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proпопробуйте ChDir
А можно поподробней.
...
Рейтинг: 0 / 0
ShellExecute - ошибка при удалении файла или папки
    #38764399
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположительно, вы не можете удалить папку, потому что она является текущей для ворда. Может быть поможет смена текущей папки на другую с помощью оператора ChDir
...
Рейтинг: 0 / 0
ShellExecute - ошибка при удалении файла или папки
    #38764676
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23пока шаблон висит подключенный, но это не вариант каждый раз переподключать шаблон.Что в данном случае есть "шаблон"?

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

nataxa23выходит сообщение об ошибке при удалении файла или папки. Просит закрыть программу, которая эту папку использует.
Если в предыдущем вопросе ответ - отдельное окно explorer, то это нормально. И теоретически эксплорер будет держать захват до тех пор, пока не будет выгружен как минимум файл, из модуля которого выполнялся браузинг, а скорее всего - до выгрузки из памяти воркспейса, в котором был открыт документ с макросом.
...
Рейтинг: 0 / 0
ShellExecute - ошибка при удалении файла или папки
    #38765222
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
ShellExecute - ошибка при удалении файла или папки
    #38765242
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)
nataxa23Ругается явно на мою последнюю процедуру в которой я через "ShellExecute" запускаю открытие моей папкиЕсли вы так уверены, что дело именно в этой команде - выделите не в отдельный шаблон, где другого кода нет и воспроизведите ситуацию. Мне не удалось. Если вам удастся - приложите тестовый файл.

2) ChDir не помог?
...
Рейтинг: 0 / 0
ShellExecute - ошибка при удалении файла или папки
    #38765394
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
ShellExecute - ошибка при удалении файла или папки
    #38765396
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы, видимо, хелп не читаете принципиально?
Очевидно, Dir("...") держит папку в ожидании Dir()
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ShellExecute - ошибка при удалении файла или папки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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