3

Я очень новичок в мире VBA, поэтому я немного изо всех сил, чтобы понять это.

Поэтому я хотел бы импортировать другой документ Excel в мой лист. Мне удалось выяснить эту часть.

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

У меня проблемы с отображением ячеек, в которых я хочу получить информацию.

Так, например, мои данные, которые я хочу экспортировать, находятся в ячейке A2-B2-C2, когда они импортируются, я хочу, чтобы они находились там же, где и A2-B2-c2.

Следующий лот будет D2-E2-F2, и я хочу, чтобы они импортировали в ячейки G2-H2-I2

Последний лот будет ячейки G2-H2-I2-J2-K2 для импорта в ячейки K2-L2-M2-N2-O2

Важные данные могут находиться в нескольких строках, вплоть до 20000 строк, поэтому данные должны будут заполняться друг под другом.

Извините, если это не ясно, если вам нужна дополнительная информация, пожалуйста, дайте мне знать

1 ответ1

0

Проще использовать переменную Range, используя Resize, так что вам нужно только указать:

  • диапазон источника: Set SrcRg = wS.Range("A2:P2")
  • первая ячейка, в которую вы хотите импортировать: wsTB.Range("A2")

Код:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .