2017-09-27 10 views
0

私の状況は、MS WordからWorkbookからオープンしています。これを達成するために、私はUserformチェックボックスとボタンを使用しています。以下のコードはすべてのチェックボックスをループし、C.ValueTrueを返す場合は、CEEMEAボタンを押してアクションを実行します。Ms-Wordからオブジェクトとしてワークブックを開き、チェックボックスを使用してテキストを検索する、行全体を削除してからワークブックを閉じる

Excel Objectという名前のXcに問題があります。

最初に私はを実行します。CEEMEAマクロが正しく実行されます(ブックを開く - >テキストの検索 - >行の削除 - >クローズブックなど)。

ですが、2回目にエラーRun-time Error '13': Type mismatchが返されます。これまでのところ、最初に実行したときに何かが残っていると思います。終了しない/閉じる/何も設定していない(ブックの複製)

すべてのスペルをチェックしました。

私はXc.Quitの最後にあり、Set Xc= Nothingです。

どこが間違っているのか分かりませんでした。私が最初に実行したことは、私がQuitまたはSetから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 
+0

あなたはWorksheetを指定しませんでした。 '.Worksheet(" SheetName ")を試してください。Find ...' – AntiDrondert

答えて

1

オブジェクトとしてブックを開く必要はありません。これはあなたのために働くかもしれません。 workbooks.closeが存在する場合は、すべてのブックが終了します。

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 
関連する問題