2017-12-21 80 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 

これは、Word文書からすべての未使用のスタイルを削除する必要があります。私はインターネット上で見つけて、同じことをしなければならない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 
関連する問題