VBA 导入并将单元格映射到特定单元格

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 行,因此数据需要相互填充。

抱歉,如果这不清楚,如果您需要更多信息,请告诉我

答案1

使用 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

相关内容