2015-04-01 67 views
0

我有一个Word文档,其中有书签的文本行 - 每行说10行。我在Word文档的不同页面上有6条这样的文本行,所以我在整个Word文档中总共有6个书签。现在给予一定的标准在Excel中说,如果Coulmn A1:A6有:VBA在Word文档中不符合标准时删除书签

0,1,1,1,0,1 

其中,如果单元格A1是0删除第一个书签命名SAI1,sai1.delete,如果单元格A2是1不删除书签命名SAI2,如果单元格A3是1不删除,但是如果删除0等等等等;基本上我想要的是一个循环来完成100 +以上的书签,如果在Excel中有100多个标准,它可能会更多。除了if-else语句之外,我找不到更简单的方法。我会很感激这个帮助。 这里是我到目前为止的代码:

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 

回答

0

我知道这是旧的文章,但是这应该得到你所需要的:

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 

此代码假定您的零和一的名单都在列从第1行开始。

将此代码放入您的Excel文件中,将您的工作表设置为您想要的,将您的文件名添加为wdName,并且应该全部设置好。