VBA在word文档中不满足条件时删除书签



我有一个Word文档,在那里我为文本行添加了书签,比如每行10行。我在word文档的不同页面上有6行这样的文本,所以我在整个word文档中总共有6个书签。现在在Excel中给定某些条件,比如Coulmn A1:A6是否具有

0,1,1,1,0,1

其中,如果小区A1是0,则删除名为sai1的第一个书签,sai1.delete,如果小区A2是1,则不删除名为sei2的书签,如果小区A3是1则不删除,但如果0则删除,依此类推;本质上,我想要的是一个循环,为100多个书签做这件事,在excel中给定100多个标准,可能会更多。除了非此即彼的陈述,我找不到更简单的方法了。我会非常感谢你的帮助。这是我到目前为止的代码:

Set wtb1 = wdd.Bookmarks("D043").Range
Set wtb2 = wdd.Bookmarks("D044").Range
Set wtb3 = wdd.Bookmarks("D018").Range
Set wtb4 = wdd.Bookmarks("D046").Range
If Sheets("CPA").Cells(426, 7).Value = 0 Then
         wtb1.Delete
         ElseIf Sheets("CPA").Cells(427, 7).Value = 0 Then
               wtb2.Delete
         ElseIf Sheets("CPA").Cells(428, 7).Value = 0 Then
               wtb3.Delete
         ElseIf Sheets("CPA").Cells(429, 7).Value = 0 Then
               wtb4.Delete
End If

有没有For循环方法来解决这个问题?我也试过这样做:

 For k = 426 To 429
 If Sheets("CPA").Cells(k, 7).Value = 0 Then
     'Sheets("CPA").Cells(i, 10) = Sheets("CPA").Cells(i, 9).Value
     Value1 = Sheets("CPA").Cells(426, 9).Value
     Value1(i).Text.Delete
     i = i + 1
     End If
 Next

我知道这是一篇旧帖子,但它应该能满足您的需求:

Option Explicit
Sub ManageBookmarks()
Dim wdApp   As Object
Dim wdDoc   As Object
Dim wdName  As String
Dim wdTemp  As Object
Dim ws      As Worksheet
Dim LastRow As Long
Dim i       As Long
Set ws = ActiveSheet
wdName = "C:Test.docx" 'Your file path here
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If wdApp Is Nothing Then
    On Error GoTo 0
    Set wdApp = CreateObject("Word.Application")
    Set wdDoc = wdApp.Documents.Open(wdName)
    wdApp.Visible = True
Else
    On Error GoTo 0
    For Each wdTemp In wdApp.Documents
        If StrComp(wdTemp.FullName, wdName, vbTextCompare) = 0 Then
            Set wdDoc = wdTemp
            Exit For
        End If
    Next wdTemp
    If wdDoc Is Nothing Then
        Set wdDoc = wdApp.Documents.Open(wdName)
    End If
End If
With ws
    LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To LastRow
        If .Cells(i, 1).Value = 1 Then
            If wdDoc.Bookmarks.Exists("sai" & i) = True Then
                wdDoc.Bookmarks("sai" & i).Delete
            End If
        End If
    Next i
End With
End Sub

此代码假设您的0和1列表位于从第1行开始的列A中。

把这段代码放在你的Excel文件中,把你的工作表设置成你想要的,把wdName的文件名添加进去,你就应该做好了。

最新更新