Copie o agregue una hoja específica del libro cerrado, según el valor de la celda, al libro activo

Copie o agregue una hoja específica del libro cerrado, según el valor de la celda, al libro activo

Tengo datos CSV sin procesar para cada país de la UE, en los que ejecuto una macro para formatearlos, hacer un pivote, etc. Todos los archivos de Excel comienzan con el código de país, es decir: informe AT 201901, informe FR 201901, etc.

Tengo otro libro de Excel, guardado en una unidad de red, llamado VATCONTROLS, con hojas por país, es decir, AT, FR, BE, DE, etc.

Estoy buscando una macro que observe los dos primeros dígitos del nombre del libro activo y luego copie/pegue la hoja correspondiente del libro de VATControls cerrado y la agregue al libro activo.

¿Cómo haría esto? Esto es sólo una parte del código. Newsheet es una hoja de trabajo para otra parte del código.

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

Probé muchas cosas y combiné algunos fragmentos de código de muestra de varias fuentes con varios resultados. El código es un desastre y necesita ser limpiado, ya que no es consistente, pero me gustaría que esta parte funcione y me temo que estoy mezclando varios métodos para lograr un objetivo.

Para aclarar: quiero copiar o agregar una hoja completa de un libro cerrado, donde el nombre de la hoja coincide con el valor en la celda b1, en una nueva hoja del libro activo. La parte del código siguiente {Set sht = wb.wsGET}fue solo para ver si esa parte funciona.

Respuesta1

@Dennis, la siguiente macro agrega una nueva hoja al libro de trabajo Z.active y copia la hoja de iva del país del libro de trabajo de 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

información relacionada