Moritz J.
2014-01-17 07:01:18 UTC
Hallo Leute,
ich möchte in einem Word-Dokument ein Makro erzeugen, welches mir durch Auswahl bestimmter Kriterien ermöglicht gezielt Tabellen aus meinem Dokument zu entfernen.
Dafür habe ich eine Oberfläche mit mehreren Dropdown-Menüs erstellt.
Die jeweiligen Tabellen habe ich schon mit Textmarken versehen. Mein Problem ist jetzt, mehrere Textmarken auf einmal anzusprechen und dann zu löschen. Mein bisheriges Programm sieht so aus:
Private Sub ComboBox1_Change()
Dim wdDoc As Document 'Word-Dokument
Dim wdRange As Range
Dim tblTab1 As Table 'Tabelle
Dim strBookmark As String
Dim nCols As Integer 'Anzahl Spalten
Dim nRows As Integer 'Anzahl Zeilen
Dim rNew As Row
'Verweis auf Dokument setzen:
Set wdDoc = ActiveDocument
strBookmark = "A"
strBookmark = "B"
strBookmark = "C"
strBookmark = "D"
strBookmark = "F"
strBookmark = "G"
strBookmark = "H"
strBookmark = "I"
strBookmark = "J"
strBookmark = "K"
strBookmark = "L"
strBookmark = "M"
strBookmark = "N"
strBookmark = "O"
strBookmark = "P"
strBookmark = "Q"
strBookmark = "R"
strBookmark = "S"
strBookmark = "T"
strBookmark = "U"
strBookmark = "V"
strBookmark = "W"
strBookmark = "X"
'Wenn die Textmarken existiert...
If Bookmark.Exists(ActiveDocument, strBookmark) Then
Set wdRange = wDoc.Bookmarks(strBookmark).Range
'... und auch noch eine Tabelle im Bereich vorhanden ist...
If wdRange.Tables.Count > 0 Then
Set tblTab1 = wdRange.Tables(1)
Set tblTab2 = wdRange.Tables(1)
Set tblTab3 = wdRange.Tables(1)
Set tblTab4 = wdRange.Tables(1)
Set tblTab5 = wdRange.Tables(1)
Set tblTab6 = wdRange.Tables(1)
Set tblTab7 = wdRange.Tables(1)
Set tblTab8 = wdRange.Tables(1)
Set tblTab9 = wdRange.Tables(1)
Set tblTab10 = wdRange.Tables(1)
Set tblTab11 = wdRange.Tables(1)
Set tblTab12 = wdRange.Tables(1)
Set tblTab13 = wdRange.Tables(1)
Set tblTab14 = wdRange.Tables(1)
Set tblTab15 = wdRange.Tables(1)
Set tblTab16 = wdRange.Tables(1)
Set tblTab17 = wdRange.Tables(1)
Set tblTab18 = wdRange.Tables(1)
Set tblTab19 = wdRange.Tables(1)
Set tblTab20 = wdRange.Tables(1)
Set tblTab21 = wdRange.Tables(1)
Set tblTab22 = wdRange.Tables(1)
Set tblTab23 = wdRange.Tables(1)
With tblTab23
''Anzahl Spalten ermitteln:
' nCols = .Columns.Count
nRows = .Rows.Count
'Hier ggf. weiterer Code....
End With
If ComboBox1.Value = "CO2" Then
tblTab7.Delete
tblTab23.Rows(5).Delete
tblTab23.Rows(5).Delete
tblTab23.Rows(5).Delete
tblTab23.Rows(5).Delete
Else
If ComboBox1.Value = "FKL" Then
tblTab1.Delete
tblTab13.Delete
tblTab22.Delete
tblTab23.Rows(2).Delete
tblTab23.Rows(2).Delete
tblTab23.Rows(2).Delete
End If
'Verweis (Speicher) freigeben:
Set rNew = Nothing
Set tblTab1 = Nothing
End If
Set wdRange = Nothing
End If
'Verweis (Speicher) freigeben:
Set wdDoc = Nothing
End If
End Sub
Public Function BookmarkExists(ByVal vobjDoc As Document, _
ByVal vsBMName As String) As Boolean
With vobjDoc
If .Bookmarks.Exists(vsBMName) Then
BookmarkExists = True
End If
End With
End Function
Kann es sein, dass er nur die letzte Bookmark sucht? Freue mich über jeden Tip!!
Gruß Moritz
ich möchte in einem Word-Dokument ein Makro erzeugen, welches mir durch Auswahl bestimmter Kriterien ermöglicht gezielt Tabellen aus meinem Dokument zu entfernen.
Dafür habe ich eine Oberfläche mit mehreren Dropdown-Menüs erstellt.
Die jeweiligen Tabellen habe ich schon mit Textmarken versehen. Mein Problem ist jetzt, mehrere Textmarken auf einmal anzusprechen und dann zu löschen. Mein bisheriges Programm sieht so aus:
Private Sub ComboBox1_Change()
Dim wdDoc As Document 'Word-Dokument
Dim wdRange As Range
Dim tblTab1 As Table 'Tabelle
Dim strBookmark As String
Dim nCols As Integer 'Anzahl Spalten
Dim nRows As Integer 'Anzahl Zeilen
Dim rNew As Row
'Verweis auf Dokument setzen:
Set wdDoc = ActiveDocument
strBookmark = "A"
strBookmark = "B"
strBookmark = "C"
strBookmark = "D"
strBookmark = "F"
strBookmark = "G"
strBookmark = "H"
strBookmark = "I"
strBookmark = "J"
strBookmark = "K"
strBookmark = "L"
strBookmark = "M"
strBookmark = "N"
strBookmark = "O"
strBookmark = "P"
strBookmark = "Q"
strBookmark = "R"
strBookmark = "S"
strBookmark = "T"
strBookmark = "U"
strBookmark = "V"
strBookmark = "W"
strBookmark = "X"
'Wenn die Textmarken existiert...
If Bookmark.Exists(ActiveDocument, strBookmark) Then
Set wdRange = wDoc.Bookmarks(strBookmark).Range
'... und auch noch eine Tabelle im Bereich vorhanden ist...
If wdRange.Tables.Count > 0 Then
Set tblTab1 = wdRange.Tables(1)
Set tblTab2 = wdRange.Tables(1)
Set tblTab3 = wdRange.Tables(1)
Set tblTab4 = wdRange.Tables(1)
Set tblTab5 = wdRange.Tables(1)
Set tblTab6 = wdRange.Tables(1)
Set tblTab7 = wdRange.Tables(1)
Set tblTab8 = wdRange.Tables(1)
Set tblTab9 = wdRange.Tables(1)
Set tblTab10 = wdRange.Tables(1)
Set tblTab11 = wdRange.Tables(1)
Set tblTab12 = wdRange.Tables(1)
Set tblTab13 = wdRange.Tables(1)
Set tblTab14 = wdRange.Tables(1)
Set tblTab15 = wdRange.Tables(1)
Set tblTab16 = wdRange.Tables(1)
Set tblTab17 = wdRange.Tables(1)
Set tblTab18 = wdRange.Tables(1)
Set tblTab19 = wdRange.Tables(1)
Set tblTab20 = wdRange.Tables(1)
Set tblTab21 = wdRange.Tables(1)
Set tblTab22 = wdRange.Tables(1)
Set tblTab23 = wdRange.Tables(1)
With tblTab23
''Anzahl Spalten ermitteln:
' nCols = .Columns.Count
nRows = .Rows.Count
'Hier ggf. weiterer Code....
End With
If ComboBox1.Value = "CO2" Then
tblTab7.Delete
tblTab23.Rows(5).Delete
tblTab23.Rows(5).Delete
tblTab23.Rows(5).Delete
tblTab23.Rows(5).Delete
Else
If ComboBox1.Value = "FKL" Then
tblTab1.Delete
tblTab13.Delete
tblTab22.Delete
tblTab23.Rows(2).Delete
tblTab23.Rows(2).Delete
tblTab23.Rows(2).Delete
End If
'Verweis (Speicher) freigeben:
Set rNew = Nothing
Set tblTab1 = Nothing
End If
Set wdRange = Nothing
End If
'Verweis (Speicher) freigeben:
Set wdDoc = Nothing
End If
End Sub
Public Function BookmarkExists(ByVal vobjDoc As Document, _
ByVal vsBMName As String) As Boolean
With vobjDoc
If .Bookmarks.Exists(vsBMName) Then
BookmarkExists = True
End If
End With
End Function
Kann es sein, dass er nur die letzte Bookmark sucht? Freue mich über jeden Tip!!
Gruß Moritz