1

Тема: Ошибка при удалении файла или папки

Как разорвать связь между программно созданной папкой и WINWORD.EXE? hmm
Суть такая,
макрос поочередно пересохраняет файлы в новую созданную директорию (папку). В конце работы все документы закрыты, папка тоже. Но, если потом пытаться удалить созданную прграммно папку, то выдается сообщение об ошибке при удалении файла или папки, ну а далее у меня вылезает программа «Unlocker» и предлагает действия.
Т.е. папка остается как бы привязаной к winword.exe и пока не закроется сам шаблон, папку удалить не получится. sad
Подскажите пожалуйста, как программно разорвать эту связь с папкой по окончанию работы макроса? Чтобы не перезапускать каждый раз шаблон в ворде.

Ищу соратников по программированию

2

Re: Ошибка при удалении файла или папки

Похоже в вашем макросе не происходит освобождение переменных перед завершением работы макроса.
Вам необходимо освободить все переменные, используемые в коде.
Ниже приведен пример кода (из справки по VBA), в котором сначала переменная создается, а перед завершением макроса освобождается, присвоением ей значения Nothing.

Dim xlApp As Object    ' Declare variable to hold the reference.
    
Set xlApp = CreateObject("excel.application")
    ' You may have to set Visible property to True
    ' if you want to see the application.
xlApp.Visible = True
    ' Use xlApp to access Microsoft Excel's 
    ' other objects.
xlApp.Quit    ' When you finish, use the Quit method to close 
Set xlApp = Nothing    ' the application, then release the reference.

3

Re: Ошибка при удалении файла или папки

Boris_R пишет:

Похоже в вашем макросе не происходит освобождение переменных перед завершением работы макроса.
Вам необходимо освободить все переменные, используемые в коде.
Ниже приведен пример кода (из справки по VBA), в котором сначала переменная создается, а перед завершением макроса освобождается, присвоением ей значения Nothing.

Честно говоря, во всех своих процедурах все объекты, которые я создаю в макросе я в конце обязательно освобождаю переменные.
А для документов, которые открываются для пересохранения в другой каталог я использую как "ActiveDocument", например: ActiveDocument.Activate.
При создании нового каталога я использовала функцию MkDir.

Ищу соратников по программированию

4

Re: Ошибка при удалении файла или папки

Скорее всего Ваш макрос в процессе работы создает несколько экземпляров Word. Даже при закрытии документов, сами эти экземпляры продолжают работать. Выложите текст макроса.

5

Re: Ошибка при удалении файла или папки

aap77 пишет:

Скорее всего Ваш макрос в процессе работы создает несколько экземпляров Word. Даже при закрытии документов, сами эти экземпляры продолжают работать. Выложите текст макроса.

Не, по окончанию работы макроса я проверяла не запускается ли WINWORD.EXE отдельно дубликатом, потому как мне это не нужно вовсе. Что то я явно где то упускаю по незнанке. roll
Но, кажется я нашла свой промох в процедуре, где по окончанию открываю созданную папку. По моему, он ссылается на то, что "ShellExecute" выполнил свое действие открыть папку, которая была создана. Но, я что то не пойму, как правильно тогда его очистить по завершению? Я же его не создавала как объект в своей процедуре. hmm

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
  ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub ОткрытьПапку()
'Открыть/Показать папку
On Error GoTo ErrNumber
'==============================================
If strPathReSaves <> "" Then
  If Dir(strPathReSaves, vbDirectory) <> "" Then 'Если папака существует
    ShellExecute 0&, vbNullString, strPathReSaves, vbNullString, vbNullString, vbNormalFocus 'Открыть папку с именем
  End If
End If
'==============================================
Exit Sub

ErrNumber:
  If Error <> 0 Then
    MsgBox Err.Description, , "№ " & Err.Number & ", Процедура: «ОткрытьПапку»"
    Exit Sub
  End If
End Sub
Ищу соратников по программированию

6

Re: Ошибка при удалении файла или папки

Тема больше не актуальна. Ошибка найдена и исправлена. cool
Спасибо большое всем, кто обратил внимание и пытался направить на путь истинный. roll

Ищу соратников по программированию