2016-05-13 43 views
0

Versuch, eine Funktion zum Löschen von leeren Seiten in einem Word-Dokument zu schreiben. Nichts wird gelöscht. Ich schätze es, wenn jemand einen Blick darauf werfen kann.Löschen von leeren Seiten in Word Doc mit VBA

Public Function DeleteBlankPages(wd As Word.Document, wdApp As Word.Application) 
    Dim par As Paragraph 
    For Each par In wd.Paragraphs 
     If IsEmpty(par.Range.Text) Then 
      par.Range.Select 
      wdApp.Selection.Delete 
     End If 
    Next par  
End Function 
+0

Haben Sie versucht, es Zeile für Zeile mit dem Debugger ausgeführt wird? – litelite

Antwort

1

die Definition von IsEmpty in der VBA-Sprachreferenz nachschlagen. Es tut nicht, was du dir vorstellst.

Der richtige Weg, um herauszufinden, ob es Textinhalte gibt, ist die Anzahl der Zeichen zu überprüfen. In VBA erfolgt dies typischerweise mit der Funktion Len (= Länge). Sie würden denken, dass der Vergleich auf 0 (Null) sein sollte, aber das ist nicht der Fall für einen Absatz, weil ein Word-Absatz immer seine Absatzmarke enthält (ANSI 13).

Wählen Sie außerdem keine Notwendigkeit, der Absatz oder einen Bereich, um es zu löschen, benutzen Sie einfach die Delete Methode direkt auf dem par.Range. (Das bedeutet, Sie brauchen auch nicht ein Word.Application Objekt zu übergeben.

Beachten Sie auch, dass Ihr Code nichts Seiten macht, nur den Absätzen ... Es konnte gelöscht leere Seiten, je nachdem, wie sich die Dinge formatiert sind, aber es könnte sinnvoll sein, um die Funktion zu benennen und kommentieren, wie diese

So mehr wie arbeiten es soll.

Public Function DeleteBlankPages(wd As Word.Document) 
    Dim par As Paragraph 
    For Each par In wd.Paragraphs 
     If Len(par.Range.Text) <= 1 Then 
      par.Range.Delete 
     End If 
    Next par  
End Function 
Verwandte Themen