Liste in Excel - Seiten in Word löschen!

Frage: Wie lösche ich korrespondierende Seiten in einem Worddokument, wenn in einer Excelliste in Spalte B kein "X" steht (Exceldatei und Worddokument müssen im selben Ordner sein)? Das abgespeckte Worddokument wird dann unter dem Namen "Test_" plus einer Zufallszahl im gleichen Ordner wie die Exceldatei abgespeichert.

Seiten in Worddatei löschen - Vorgaben aus Excel...[ZIP, 60 KB]

Option Explicit
Dim objWD As Object
Public Sub Test()
On Error Resume Next
Set objWD = GetObject(, "Word.Application")
Select Case Err.Number
Case 429
Err.Clear
Set objWD = CreateObject("Word.Application")
If Err.Number > 0 Then
MsgBox Err.Number & " " & Err.Description
Set objWD = Nothing
Exit Sub
End If
Case 0
Case Else
MsgBox Err.Number & " " & Err.Description
Set objWD = Nothing
Exit Sub
End Select
On Error GoTo 0
On Error GoTo Fin
Call Write_Word
Fin:
Set objWD = Nothing
If Err.Number <> 0 Then MsgBox "Fehler: " & _
Err.Number & " " & Err.Description
End Sub
Private Sub Write_Word()
Dim intPage As Integer
Dim rngTMP As Object
With objWD
.Documents.Open _
(ThisWorkbook.Path & "\" & _
"Testdatei_mit_10_Seiten.doc")
' wdGoToPage - Konstante = 1
' wdGoToAbsolute - Konstante = 1
For intPage = Tabelle1.Range _
("A" & Tabelle1.Rows.Count).End(xlUp).Row To 1 Step -1
If Not UCase(Tabelle1.Cells(intPage, 2).Value) = "X" Then
If intPage = Tabelle1.Range _
("A" & Tabelle1.Rows.Count).End(xlUp).Row Then
.Selection.GoTo 1, 1, intPage
Set rngTMP = .Selection.Bookmarks("\Page").Range
rngTMP.Start = rngTMP.Start - 1
rngTMP.Delete
Else
.Selection.GoTo 1, 1, intPage
.Selection.Bookmarks("\Page").Range.Delete
End If
End If
Next intPage
.ActiveDocument.SaveAs (ThisWorkbook.Path & _
"\" & "Test_" & Int(1000 * Rnd) + 1 & ".doc")
.ActiveDocument.Close False
.Quit
End With
End Sub

Kommentare

Beliebte Posts aus diesem Blog

Formeln - auch Array - per VBA eintragen...

Alle Dateien eines Ordners - Optional mit Unterordner

Excel -> Word in Textmarken (Bookmarks)...