VBA Importa e mapeia células para células específicas

3

Sou muito novo no mundo VBA, então estou lutando um pouco aqui para descobrir isso.

Portanto, gostaria de importar outro documento do Excel para minha planilha. Eu consegui descobrir essa parte.

Sub Import()
Dim OpenFileName As String
Dim wb As Workbook
'Select and Open workbook
OpenFileName = Application.GetOpenFilename("clients savedspreadsheet,*.xls")
If OpenFileName = "False" Then Exit Sub
Set wb = Workbooks.Open(OpenFileName)

'Get data EXAMPLE
ThisWorkbook.Sheets(1).Range("A2:P2").Value = wb.Sheets(1).Range("A2:P2").Value


MsgBox ("Done")


End Sub

Estou com problemas para mapear as células em que quero as informações.

Então, por exemplo, meus dados que eu quero exportar estão na célula A2-B2-C2 quando eles importam, eu os quero no mesmo lugar de A2-B2-c2

O próximo lote seria D2-E2-F2 e eu quero que eles importem para as Células G2-H2-I2

O último lote seria células G2-H2-I2-J2-K2 para importar para as células K2-L2-M2-N2-O2

Os dados importantes podem estar em várias linhas, com até 20.000 linhas, para que os dados precisem ser preenchidos.

Desculpe se isso não está claro, se você precisar de mais informações, por favor me avise

    
por Olivier Lim 10.03.2017 / 12:22

1 resposta

0

É mais fácil usar uma variável Range, usando Redimensionar. Dessa forma, você só precisa especificar:

  • o intervalo de origem: Set SrcRg = wS.Range("A2:P2")
  • a primeira célula para a qual você deseja importar: wsTB.Range("A2")

Código:

Sub Import()
Dim OpenFileName As String
Dim wB As Workbook
Dim wS As Worksheet
Dim wsTB As Worksheet

Set wsTB = ThisWorkbook.Sheets(1)
'Select and Open workbook
OpenFileName = Application.GetOpenFilename("clients savedspreadsheet,*.xls")
If OpenFileName = "False" Then Exit Sub
Set wB = Workbooks.Open(OpenFileName)
Set wS = wB.Sheets(1)

Dim SrcRg As Range
'Get data EXAMPLE
Set SrcRg = wS.Range("A2:P2")
wsTB.Range("A2").Resize(SrcRg.Rows.Count, SrcRg.Columns.Count).Value = SrcRg.Value

Set SrcRg = wS.Range("D2:F2")
wsTB.Range("G2").Resize(SrcRg.Rows.Count, SrcRg.Columns.Count).Value = SrcRg.Value

Set SrcRg = wS.Range("G2:K2")
wsTB.Range("K2").Resize(SrcRg.Rows.Count, SrcRg.Columns.Count).Value = SrcRg.Value



MsgBox ("Done")
End Sub
    
por 10.03.2017 / 15:09