【问题标题】:Copy Cell from an already open workbook to another using VBA使用 VBA 将单元格从已打开的工作簿复制到另一个工作簿
【发布时间】:2015-10-06 04:35:18
【问题描述】:

这是我的代码:

Sub FillInternetForm()
    Dim fromPath As String
    Dim toPath As String

    fromPath = InputBox(prompt:="Enter FROM File FULL Path:", _
    Title:="FROM FILE", Default:="")

    toPath = InputBox(prompt:="Enter TO File FULL Path:", _
    Title:="TO FILE", Default:="")

    Workbooks(fromPath).Sheets("Sheet1").Range("F10").Copy
    Workbooks(toPath).Sheets("Sheet1").Range("F10").PasteSpecial

End Sub

我有 3 个工作簿(Macros.xlsm、CopyFrom.xlsx 和 CopyTo.xlsx)。上述代码存储在 Macros.xlsm 工作簿的模块 1 中。

工作簿(CopyFrom.xlsx 和 CopyTo.xlsx)已经打开...

我需要做的是:将单元格 (F10) 中的值从 CopyFrom.xlsx 工作簿复制到 CopyTo.xlsx 工作簿中的单元格 (F10)...

我不断收到以下错误:“下标超出范围”

感谢任何帮助!

【问题讨论】:

  • 如果书籍是打开的,则不需要完整路径。只是书名。
  • 我也尝试了书名但同样的错误。
  • 我假设你有“Sheet1”。嗯,也许可以试试worksheets 而不是sheets,但是如果你已经知道它们是哪些书,为什么还要提示输入姓名?编辑:如果您不需要格式化,只需将范围设置为彼此而不是复制粘贴。

标签: excel vba


【解决方案1】:

您需要为这些工作簿创建对象。

Sub FillInternetForm()
    Dim fromPath As String
    Dim toPath As String
    Dim wbFrom As Workbook
    Dim wbTo As Workbook
    Dim fromValue As String

    fromPath = InputBox(prompt:="Enter FROM File FULL Path:", _
    Title:="FROM FILE", Default:="")

    toPath = InputBox(prompt:="Enter TO File FULL Path:", _
    Title:="TO FILE", Default:="")

    Set wbFrom = Workbooks.Open(Filename:=fromPath, ReadOnly:=True)
    Set wbTo = Workbooks.Open(Filename:=toPath, ReadOnly:=False)

    wbFrom.Activate
    fromValue = ActiveWorkbook.Sheets(1).Range("F10").Value

    wbTo.Activate
    ActiveWorkbook.Sheets(1).Range("F10").Value = fromValue

End Sub

我不确定您为什么说它们已经打开,然后您要询问它们的完整路径。也许你可以解释一下。

【讨论】:

  • 哦,所以父对象也必须是一个对象。很高兴知道^^
  • @findwindow 最好声明任何工作簿或工作表。它可以避免必须执行 .select 或 .activate。让您无需知道它们是否处于活动状态即可访问它们。
  • 等等,这样就不用设置父级了吗?我知道这是很好的做法,但在这里谈论技术。
  • 家长是什么意思?如果您指的是模块工作簿,那么如果代码从那里运行,它就会处于活动状态。我只声明我正在使用什么。
  • 工作簿是该范围的父级。嗯,爷爷奶奶。 (工作表是父级)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
相关资源
最近更新 更多