【问题标题】:Copying data from external worksheet to another将数据从外部工作表复制到另一个
【发布时间】:2016-08-25 17:43:51
【问题描述】:

我一直在尝试做这件事,但我做不到。我通常会搜索更多等,但我对 VBA(仅 C++ 和 Java)不太熟悉。

我有一个 Excel 文件(工作簿),其中包含多个包含数据的工作表(源)。我有另一个 Excel 文件,其中再次包含多个仅包含标题(目标)的工作表。

我想要做的是一个代码,它进入目标工作簿并获取标题,然后进入源工作簿并循环遍历所有工作表,直到找到该标题,然后将数据复制到目标工作簿中。

请记住,源文件中的所有标题在所有工作表中都位于同一行。

【问题讨论】:

  • 您不会得到满足您需要的准确代码。但是有很多很好的例子会有所帮助。你应该做的是将你的问题分解成更小的问题,例如如何循环工作表,如何获取工作表名称等......并尝试工作和构建你需要的东西。如果您遇到任何错误,那么总是存在 :-)
  • 我目前正在阅读,但如果没有适当的基础,很难开始如此深入,但感谢您的建议。
  • 这其实是很常见的事情。您应该能够轻松找到此代码。
  • 我刚刚(昨天)回答了一个有点相似的问题:stackoverflow.com/questions/36912162/…我希望这会有所帮助。
  • 在不了解基础知识的情况下很难解释一段代码。我想我放弃了,只是手动做吧:(..浪费太多时间

标签: vba excel


【解决方案1】:

这段代码应该可以解决你的问题;

Sub Read_External_Workbook()

    '''''Define Object for Target Workbook
    Dim Target_Workbook As Workbook
    Dim Source_Workbook As Workbook
    Dim Target_Path As String

    '''''Assign the Workbook File Name along with its Path
    '''''Change path of the Target File name
    Target_Path = "D:\Sample.xlsx"
    Set Target_Workbook = Workbooks.Open(Target_Path)
    Set Source_Workbook = ThisWorkbook

    '''''With Target_Workbook object now, it is possible to pull any data from it
    '''''Read Data from Target File - Assuming that your headers's locations are absolute.
    Target_Data = Target_Workbook.Sheets(1).Cells(1, 1)
    Source_Workbook.Sheets(1).Cells(1, 1) = Target_Data

    '''''Update Target File - 
    Source_data = Source_Workbook.Sheets(1).Cells(3, 1)
    Target_Workbook.Sheets(1).Cells(2, 1) = Source_data

    '''''Close Target Workbook
    Source_Workbook.Save
    Target_Workbook.Save
    Target_Workbook.Close False

    '''''Process Completed
    MsgBox "Task Completed"

End Sub

【讨论】:

  • 我的数据不必是相同的顺序?我希望代码在 source_workbook 中循环。例如,我可能需要的第一列可能在第一个工作表中,而第二列可能在第三个工作表中?
猜你喜欢
  • 2022-08-23
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多