VBA Importuj i mapuj komórki na określone komórki

2

Jestem bardzo nowy w świecie VBA, więc staram się tu trochę zrozumieć.

Chciałbym więc zaimportować kolejny dokument programu Excel do mojego arkusza. Udało mi się to rozgryźć.

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

Mam problem z mapowaniem komórek, w których chcę uzyskać informacje.

Na przykład moje dane, które chcę wyeksportować, znajdują się w komórce A2-B2-C2 podczas importu, chcę je w tym samym miejscu A2-B2-c2

Następna partia to D2-E2-F2 i chcę, aby zaimportowały do ​​komórek G2-H2-I2

Ostatnią partią byłyby komórki G2-H2-I2-J2-K2 do zaimportowania do komórek K2-L2-M2-N2-O2

Ważne dane mogą znajdować się w wielu wierszach, do 20 000 wierszy, więc dane musiałyby się zapełniać.

Przepraszamy, jeśli nie jest to jasne, jeśli potrzebujesz więcej informacji, daj mi znać

Olivier Lim
źródło
Witamy na stronie. Czy możesz podzielić się z nami swoim dotychczasowym kodem VBA? Możemy wtedy zobaczyć, z czym współpracujesz i jakiej pomocy potrzebujesz. Użyj funkcji edycji, aby dodać te szczegóły do ​​pytania.
CharlieRB,
Dodałem to, co do tej pory. Dziękuję
Olivier Lim

Odpowiedzi:

0

Łatwiej jest użyć zmiennej Range, używając Resize, w ten sposób musisz tylko określić:

  • zakres źródła: Set SrcRg = wS.Range("A2:P2")
  • pierwsza komórka, do której chcesz zaimportować: wsTB.Range("A2")

Kod :

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
R3uK
źródło