Copie ou adicione planilha específica da pasta de trabalho fechada, com base no valor da célula, para a pasta de trabalho ativa

Copie ou adicione planilha específica da pasta de trabalho fechada, com base no valor da célula, para a pasta de trabalho ativa

Tenho dados CSV brutos para cada país da UE, nos quais executo uma macro para formatá-los, fazer um pivô, etc. Todos os arquivos Excel começam com o código do país, ou seja: relatório AT 201901, relatório FR 201901, etc.

Tenho outra pasta de trabalho do Excel, salva em uma unidade de rede, chamada VATCONTROLS, com planilhas por país, portanto AT, FR, BE, DE etc.

Estou procurando uma macro que analise os dois primeiros dígitos do nome das pastas de trabalho ativas e, em seguida, copie/cole a planilha correspondente da pasta de trabalho VATControls fechada e adicione-a à pasta de trabalho ativa.

Como eu faria isso? Isso é apenas parte do código. Newsheet é uma planilha para outra parte do 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

Eu tentei muitas coisas e combinei alguns trechos de código de amostra de várias fontes com vários resultados. O código está uma bagunça e precisa ser limpo, pois não é consistente, mas gostaria que essa parte funcionasse, e receio estar misturando vários métodos para atingir um objetivo.

Para esclarecer: desejo copiar ou adicionar uma planilha inteira de uma pasta de trabalho fechada, onde o nome da planilha corresponde ao valor na célula b1, em uma nova planilha na pasta de trabalho ativa. A parte do código seguinte {Set sht = wb.wsGET}foi apenas para ver se funcionava.

Responder1

@Dennis, a seguinte macro adiciona uma nova planilha à pasta de trabalho Z.active e copia a planilha de IVA do país do livro de trabalho 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

informação relacionada