2017-12-21 8 views
0

이것은 MS-Word 매크로입니다. 그것은이 오류가 발생합니다 : 그것은 워드 문서에서 사용되지 않는 모든 스타일을 제거해야합니다 오류 4605 매크로를 실행하면 "메모리 또는 디스크 오류로 인해이 메서드 나 속성을 사용할 수 없습니다."

Error 4605 "this method or property is not available because there is a memory or disk problem

' Word script to remove all unused styles in the document 
Sub DeleteUnusedStyles() 
Dim Doc As Document, bDel As Boolean 
Dim Rng As Range, StlNm As String, i As Long 
Application.ScreenUpdating = False 
Set Doc = ActiveDocument 
With Doc 
    For i = .Styles.Count To 1 Step -1 
    With .Styles(i) 
     If .BuiltIn = False Then 
     bDel = True: StlNm = .NameLocal 
     For Each Rng In Doc.StoryRanges 
      With Rng 
      With .Find 
       .ClearFormatting 
       .Format = True 
       .Style = StlNm 
       .Execute 
      End With 
      If .Find.Found = True Then 
       bDel = False 
       Exit For 
      End If 
      End With 
     Next 
     If bDel = True Then .Delete 
     End If 
    End With 
    Next 
End With 
Application.ScreenUpdating = True 
End Sub 

. 나는 인터넷에서 발견하고 같은 일을해야하는 3 개의 다른 매크로를 테스트했으나 같은 오류가 결국 발생했다. Word 문서는 약 5 분 동안 일시 중지되고 (서식이 많은 100 페이지 문서 임)이 오류가 발생합니다. 오류가 나타나기 전에 단어 프로세스의 메모리 소비가 거의 5 배 증가하는 것을 볼 수 있습니다. 나는 여전히 충분한 RAM을 가지고있다. Windows 8.1 x86_64에서 정통 Word 2013을 실행합니다. 왜 이런 일이 발생하며 오류를 수정하려면 어떻게해야합니까?

+0

이 실행 취소 스택 할 수있다. '.Delete' 바로 다음에'Doc.UndoClear'를 추가하십시오. 그게 도움이 되니? – LocEngineer

+0

효과가있었습니다! 감사! 나는이 시점까지 vba 언어를 망친 적이 결코 없다. 내가 그것을 받아 들일 수 있도록 대답으로 게시하십시오! –

답변

2

이 경우 분명히 실행 취소 스택이 막히는 것입니다.

간단한 수정이 같은 코드를 개정 :

 '... 
     '... 
     Next 
     If bDel = True Then .Delete 
     Doc.UndoClear 
    End If 
End With 
관련 문제