Basierend auf dem Zellenwert ein bestimmtes Blatt aus einer geschlossenen Arbeitsmappe zur aktiven Arbeitsmappe kopieren oder hinzufügen

Basierend auf dem Zellenwert ein bestimmtes Blatt aus einer geschlossenen Arbeitsmappe zur aktiven Arbeitsmappe kopieren oder hinzufügen

Ich habe Rohdaten im CSV-Format für jedes EU-Land, auf denen ich ein Makro ausführe, um sie zu formatieren, eine Pivot-Tabelle zu erstellen usw. Die Excel-Dateien beginnen alle mit dem Ländercode, z. B.: AT-Bericht 201901, FR-Bericht 201901 usw.

Ich habe eine weitere Excel-Arbeitsmappe mit dem Namen VATCONTROLS, die auf einem Netzlaufwerk gespeichert ist und Blätter pro Land enthält, also AT, FR, BE, DE usw.

Ich suche nach einem Makro, das sich die ersten beiden Ziffern des Namens der aktiven Arbeitsmappe ansieht und dann das entsprechende Blatt aus der geschlossenen VATControls-Arbeitsmappe kopiert/einfügt und es der aktiven Arbeitsmappe hinzufügt.

Wie würde ich dabei vorgehen? Dies ist nur ein Teil des Codes. Newsheet ist ein Arbeitsblatt für einen anderen Teil des Codes.

Dim excel As excel.Application
Dim wsGET As String
Dim wb As excel.Workbook
Dim sht As excel.Worksheet      

NewSheet.Activate
Range("A1").Activate
Range("A1") = ActiveWorkbook.Name
Range("B1").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"

wsGET = ActiveSheet.Range("b1")
Set wb = Workbooks.Open("C:\Users\extosldva\documents\vatcontrols.xlsx")
Set sht = wsGET

 sht.Activate
 sht.Range("A1:A3").Copy
 sht.Range("B1:B3").PasteSpecial Paste:=xlPasteValues

For Each Sheet In ActiveWorkbook.Worksheets
If Sheet.Name = wsGET Then
Sheet.Activate
End If
Next

If Not targetSheetFound Then
Set Sheet = Sheets.Add
Sheet.Name = targetSheetName
End If

Ich habe vieles ausprobiert und einige Beispielcodeausschnitte aus verschiedenen Quellen mit unterschiedlichen Ergebnissen kombiniert. Der Code ist ein Chaos und muss bereinigt werden, da er nicht konsistent ist, aber ich möchte, dass dieser Teil funktioniert, und ich fürchte, ich vermische mehrere Methoden, um ein Ziel zu erreichen.

Zur Verdeutlichung: Ich möchte ein ganzes Blatt aus einer geschlossenen Arbeitsmappe, dessen Name mit dem Wert in Zelle B1 übereinstimmt, auf ein neues Blatt in der aktiven Arbeitsmappe kopieren oder hinzufügen. Der folgende Codeteil {Set sht = wb.wsGET}diente nur dazu, zu testen, ob dieser Teil funktioniert.

Antwort1

@Dennis, das folgende Makro fügt ein neues Blatt zur Z.active-Arbeitsmappe hinzu und kopiert das länderspezifische Mehrwertsteuerblatt aus der Arbeitsmappe „Vatcontrol“

Sub Macro2()

Dim excel As excel.Application
Dim wsGET As String
Dim wb As excel.Workbook
Dim sht As excel.Worksheet
Dim ActvWB As String
Dim targetSheetFound As String

ActvWB = ActiveWorkbook.Name
Sheets.Add After:=Sheets(Sheets.Count)
Range("A1").Activate
Range("A1") = ActiveWorkbook.Name
Range("B1").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],2)"

wsGET = ActiveSheet.Range("B1")

Set wb = Workbooks.Open("C:\Users\extosldva\documents\vatcontrols.xlsx")
targetSheetFound = "Not Found"
For Each Sheet In ActiveWorkbook.Worksheets
If Sheet.Name = wsGET Then
targetSheetFound = "Found"
Sheets(wsGET).Copy After:=Workbooks(ActvWB).Sheets(Workbooks(ActvWB).Sheets.Count)
wb.Close
Exit For
End If
Next

Workbooks(ActvWB).Activate
If targetSheetFound = "Not Found" Then
Sheets.Add After:=Sheets(Sheets.Count)
Sheet.Name = wsGET
End If
Worksheets(wsGET).Activate

MsgBox "done"
End Sub

verwandte Informationen