Excel 从Ms Word中打开工作簿作为对象,并使用复选框查找文本,删除整行,然后关闭工作簿

Excel 从Ms Word中打开工作簿作为对象,并使用复选框查找文本,删除整行,然后关闭工作簿,excel,vba,for-loop,ms-word,userform,Excel,Vba,For Loop,Ms Word,Userform,我的情况是,我正在从MS Word打开工作簿,在那里我找到一些文本并删除找到的整行文本。为了实现这一点,我使用了复选框和按钮。下面的代码循环遍历所有复选框,如果C.Value返回True则按CEEMEA按钮执行操作 我对Excel对象命名Xc有问题 这是我第一次运行CEEMEA宏,它运行正常(打开工作簿-->查找文本-->删除行-->关闭工作簿等) 但第二次,它返回错误运行时错误“13”:类型不匹配,到目前为止,我认为在第一次运行时可能还剩下一些东西,我没有退出/关闭/设置为“无”(工作簿的副本

我的情况是,我正在从
MS Word
打开
工作簿
,在那里我找到一些文本并删除找到的整行文本。为了实现这一点,我使用了复选框和按钮。下面的代码循环遍历所有复选框,如果
C.Value
返回
True
则按CEEMEA按钮执行操作

我对
Excel对象
命名
Xc
有问题

这是我第一次运行CEEMEA宏,它运行正常(打开工作簿-->查找文本-->删除行-->关闭工作簿等)

但第二次,它返回错误
运行时错误“13”:类型不匹配,到目前为止,我认为在第一次运行时可能还剩下一些东西,我没有退出/关闭/设置为“无”(工作簿的副本)

我检查了所有的拼写,一切都是正确的

我在最后退出了,并且
设置了Xc=Nothing

我不明白哪里出了问题。在第一次运行时,我发现可能有一些东西我没有
退出
设置
。我把整个代码放在下面。请帮忙

如果有更好的方法做这项工作,请建议

Dim Xc As Object
Set Xc = CreateObject("Excel.Application")
Xc.Visible = True
Set Wb = Xc.Workbooks.Open("C:\Users\dell\Desktop\EMEA CEEMEA\EMEA CC FINAL LIST.xls")

Dim C As MSForms.Control
For Each C In Me.Controls
    If TypeName(C) = "CheckBox" Then
    If C.Value = True Then
    If C.Caption = "Select All" Then
    Else

    Dim ff As String
    ff = Trim(C.Caption)
  With Wb
        .Application.Sheets("Sheet2").Select
        .Application.Range("A1").Select

        .Application.Cells.Find(What:=ff, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        .Application.ActiveCell.Rows("1:1").EntireRow.Select
        .Application.Selection.Delete Shift:=xlUp
        .Application.Range("A1").Select

  End With

    End If
    End If
    End If
Next C

Wb.Close SaveChanges:=True
Workbooks.Close
Set Wb = Nothing
Xc.Quit
Set Xc = Nothing

您不需要打开工作簿并使其可见。这可能对你有用<代码>工作簿。关闭
将关闭所有工作簿(如果存在)

Dim WB As Workbook
Set WB = Workbooks.Open("C:\Users\dell\Desktop\EMEA CEEMEA\EMEA CC FINAL LIST.xls")
Dim C As MSForms.Control
For Each C In Me.Controls
If TypeName(C) = "CheckBox" Then
If C.Value = True Then
If C.Caption = "Select All" Then
Else


With WB
    .Application.Sheets("Sheet2").Select
    .Application.Range("A1").Select

    .Application.Cells.Find(What:=C.Caption, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

    .Application.ActiveCell.Rows("1:1").EntireRow.Select
    .Application.Selection.Delete Shift:=xlUp

End With

End If
End If
End If
Next C

WB.Close SaveChanges:=True
Workbooks.Close
Set WB = Nothing

您没有指定工作表。尝试
.Worksheet(“SheetName”)。查找…