【问题标题】:Excel - Copy between two workbooks in VBAExcel - 在 VBA 中的两个工作簿之间复制
【发布时间】:2018-03-05 20:57:03
【问题描述】:

我有两个 Excel 工作簿。我正在尝试将工作表从一个工作簿复制到另一个工作簿。 之后,我想关闭我从中复制的工作簿。 到目前为止我做了什么:

Sub copy() Workbooks.Open filename:= _ "C:\2016.xlsm" ActiveWorkbook.Sheets("Grafic").Select Selection.Copy Destination:=Workbooks("C:\Grafic.xlsx").Sheets("Sheet1").Range("A1") End Sub

谢谢。

【问题讨论】:

  • 你要关闭的是2016.xlsm?
  • 我收到错误:“索引超出范围”,我正在寻找 2 小时以来的原因,希望有人为我提供解决方案。
  • 完全是@FoxfireAndBurnsAndBurns
  • 使用 F8 单步执行代码。然后提供错误消息和它停止的行。
  • 它停在Selection.Copy Destination:=Workbooks("C:\Grafic.xlsx").Sheets("Sheet1").Range("A1") 行这里我得到的消息超出范围。我很困惑

标签: vba excel


【解决方案1】:

也许这有帮助

Option Explicit

Sub CopyIt()

Dim wb As Workbook
Dim copyWb As Workbook
Dim wks As Worksheet
Dim fileName As String, sheetName As String

    fileName = "... complete filename ..."
    sheetName = "... sheet name ..."

    Set wb = Workbooks.Open(fileName:=fileName)
    Set wks = wb.Sheets(sheetName)

    Set copyWb = ThisWorkbook ' the workbook you would like to copy to
    wks.copy before:=copyWb.Sheets(1)

    wb.Close False
End Sub

【讨论】:

  • 嗨@Storax,当我执行你的代码时,“Set copyWb = C:\”出现错误,我将其更改为“Set copyWb = Application.Workbooks("C:\") 和然后我收到消息:超出范围
  • 我提供的代码中没有Set copyWb = C:\"这一行
  • 天啊!有用!!这很酷 !我还有一个简短的问题,假设我有更多具有相同工作表的工作簿(在更多文件夹中),并且我想复制所有这些工作簿。我应该为此使用 for each 循环吗?
  • 在您描述的情况下,您可能无法使用 for each 循环,但最好创建一个新问题,其中包含有关情况和您正在尝试的更详细信息。
【解决方案2】:

使用

Application.Workbooks("2016.xlsm").Close

Close 方法有一些参数要设置是否要保存更改。

更多信息:

Workbook.Close

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多