Импорт VBA и клетки карты к конкретным ячейкам

Я очень новичок в мире 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

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

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

17
задан Olivier Lim
07.05.2023 22:32 Количество просмотров материала 2910
Распечатать страницу

1 ответ

легче использовать переменную диапазона, используя 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
0
отвечен R3uK 2023-05-09 06:20

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх