2015-04-01 65 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,並且應該全部設置好。