我有一个Word文档,其中我有书签文本行 - 每行10行。我在word文档的不同页面上有6个这些文本行,所以我在整个Word文档中总共有6个书签。现在给出了Excel中的某些标准,比如Coulmn A1:A6是否有:
0,1,1,1,0,1
当IF单元格A1为0时,删除名为sai1的第一个书签,sai1.delete,如果单元格A2为1,则不删除名为sai2的书签,如果单元格A3为1则不删除,但如果0删除等等;基本上我想要的是一个循环,在excel中给出100多个标准的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 :(得分: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
此代码假定您的0和1列表位于第1行的第A列。
将此代码放入Excel文件中,将工作表设置为您想要的内容,添加wdName
的文件名,您应该全部设置。