【问题标题】:copying worksheets from one Excel document to another将工作表从一个 Excel 文档复制到另一个
【发布时间】:2011-06-01 02:19:08
【问题描述】:

考虑 2 个 Excel 文档:Excel 文件 A 和 Excel 文件 B。这些 Excel 文件内部有工作表(文件 A 有 a、b、c 工作表,文件 B 有 d、e、f 工作表)。

我需要复制文件 A、工作表 a(等等)中的所有内容并将其粘贴到我的试错工作表的第二张工作表中。我知道我需要为此做循环,但就是这样。

我对这个编程很陌生,更不用说 VBA。

我想将工作表 a 中的所有内容复制到我的第二张工作表中,并将工作表 b 中的任何内容复制到工作表 3 中,依此类推。

【问题讨论】:

  • 你是说FileB中的最终顺序应该是d,a,e,b,f,c?

标签: excel vba


【解决方案1】:

一些帮助您入门的提示

(我对您想要的一些细节并不完全清楚,但这应该可以帮助您入门)

首先打开两个工作簿,在其中一个中创建一个模块(不管这段代码是哪个)然后运行宏

Option Explicit ' at top of module - forces explicit declaration of variables,
    'a good thing particularly while learning
Sub CopySheets()
    Dim wbFileA As Workbook
    Dim wbFileB As Workbook
    Dim sh As Worksheet
    Dim shCopAfter As Worksheet

    ' Point to the workbooks
    Set wbFileA = Application.Workbooks("NameOfFileA.xls")
    Set wbFileB = Application.Workbooks("NameOfFileB.xls")

    ' Set pointer to first sheet in FileB
    Set shCopAfter = wbFileB.Sheets(1)

    ' loop through the sheets in FileA
    For Each sh In wbFileA.Sheets
        ' Copy sheet to FileB
        sh.Copy After:=shCopAfter
        ' If last sheet in book then set shCopyAfter to last sheet
        If ActiveSheet.Index >= wbFileB.Sheets.Count Then
            Set shCopAfter = ActiveSheet
        Else
            ' Else set shCopyAfter to the one after the one just copied
            Set shCopAfter = wbFileB.Sheets(ActiveSheet.Index + 1)
        End If
    Next
End Sub

【讨论】:

    【解决方案2】:
    Dim x as Integer
    Dim wbA as Workbook, wbB as Workbook
    
    Set wbA = Workbooks("FileA")
    Set wbB = Workbooks("FileB")
    
    For x=1 to wbA.Sheets.Count
       wbA.sheets(x).Copy After:=wbB.sheets((2*x)-1)
    Next x
    

    【讨论】:

      【解决方案3】:

      好吧,在最初提出这个问题八年后,Power Query 已集成到 Excel 中并提供帮助。 从您的目标工作簿(“B”)中,您可以按照以下步骤从“A”加载源工作表。

      1. 将工作簿“B”作为活动工作簿转到“数据”->“获取数据” -> “From File” -> “From Workbook” 并在文件浏览器中选择您的源工作簿“A”。
      2. Power Query 导航器对话框将 出现。
      3. 选择要复制的表格/工作表,然后按“加载” (“转换数据”可用于微调导入)。
      4. 将加载源工作表。
      5. 对要复制的每个工作表重复步骤 1 到 4。

      这个过程的好处是,如果源数据发生变化,刷新目标“B”中的数据所要做的就是触发“数据”->“全部刷新”。

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 2012-08-28
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 2014-07-27
        • 2016-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多