2017-07-20 3 views
1

Ziemlich neu in VBA. Ich versuche, ein Blatt aus einer anderen Excel-Datei zu ziehen und es in der aktiven Arbeitsmappe zu platzieren. Ich habe es so eingerichtet, aber ich möchte es so einrichten, dass jedes Mal, wenn ich den Code ausführe, das alte Blatt durch das neue ersetzt wird, anstatt eine unendliche Anzahl von Blättern hinzuzufügen, während das Programm weiter verwendet wird. Irgendeine Hilfe? HierErsetzen Sie Excel-Arbeitsblatt mit Blatt aus einer anderen Datei mit VBA

ist der Code, den ich bin derzeit mit:

Private Sub CommandButton2_Click() 


    Dim sh As Worksheet, wb As Workbook 

    Set wb = Workbooks("QI VBA.xlsm") 
    For Each sh In Workbooks("Example.xlsx").Worksheets 
     If sh.Name = "Sheet1" Then 
     sh.Copy After:=wb.Sheets(wb.Sheets.Count) 

    End If 
Next sh 

End Sub 

Antwort

1

ich Ihre Schleife nahm, weil es überflüssig schien, als geschrieben.

Private Sub CommandButton2_Click() 

    Dim wb as Workbook 
    Set wb = Workbooks("QI VBA.xlsm") 

    If WorksheetExists(wb, "Sheet1") Then 

     Application.DisplayAlerts = False 
     wb.Worksheets("Sheet1").Delete 
     Application.DisplayAlerts = True 

    End If 

    Workbooks("Example.xlsx").Worksheets("Sheet1").Copy After:= wb.Sheets (wb.Sheets.Count) 

End Sub 

Function WorksheetExists(wb As Workbook, sWSName As String) As Boolean 

'================================================================================================================================= 
'== Name: WorksheetExists 
'== Purpose: To check if a worksheet exists in a given workbook 
'== Notes: On Error Resume Next only used to make this a quicker process ... 
'    try to name of sheet passed, if it fails, sheet doesn't exist 
'================================================================================================================================= 

On Error Resume Next 

Dim ws As Worksheet 
Set ws = wb.Worksheets(sWSName) 

WorksheetExists = Err.Number = 0 

On Error GoTo 0 

End Function 
+0

Ich erhalte eine Fehlermeldung "Compile error: ByRef Argument Typ Mismatch". Irgendwelche Vorschläge, was schief gelaufen ist? –

+0

@ a.powell - Ich habe vergessen, das Arbeitsmappenobjekt zu deklarieren. Versuche es jetzt. –

+0

Hmm .. Nun ist der Fehler "ungültige Verwendung der Eigenschaft"? –

Verwandte Themen