【问题标题】:How to copy data from closed workbook into a master workbook如何将关闭的工作簿中的数据复制到主工作簿中
【发布时间】:2017-06-10 05:20:12
【问题描述】:

我需要使用 VBA 将数据从已关闭的工作簿(不打开它们)复制到主工作簿的列中的帮助。我不断收到错误:

运行时错误 424:需要对象

这是我的代码:

Set x = Workbooks.Open("C:\Users\DD\Desktop\EMS")

   x.Sheets("PO Report").Range("Y3:Y500").Copy

   y.Activate
   Sheets("Sheet1").Range("Q2").PasteSpecial

   Application.CutCopyMode = False
   x.Close

提前感谢您的帮助!

【问题讨论】:

  • 这里的y 是什么,哪一行给出了错误?
  • 那个 'y' 是 x=workbook 粘贴到的另一个工作簿。我是 VBA 新手,最后我得到了错误。

标签: vba excel


【解决方案1】:

这是问题所在 - 您没有指定 excel 文件的文件名

Set x = Workbooks.Open("C:\Users\DD\Desktop\EMS")

您无法从关闭的文件中读取数据...它必须是打开的

您还需要调暗 x 对象

Dim x as object

【讨论】:

  • 不一定要打开,see this
  • 哇@Tehscript - 这将在工作中帮助我很多 - 我现在不必使用互操作来读取文件......谢谢!
【解决方案2】:

我修改了here 发布的代码。在“Sheet1”工作表模块中插入以下代码:

Option Explicit

Sub GetDataDemo()
    Dim FilePath$
    Dim i As Long
    Const FileName$ = "EMS.xlsx"
    Const SheetName$ = "PO Report"
    FilePath = "C:\Users\DD\Desktop\"

    DoEvents
    Application.ScreenUpdating = False
    If Dir(FilePath & FileName) = Empty Then
        MsgBox "The file " & FileName & " was not found", , "File Doesn't Exist"
        Exit Sub
    End If
    For i = 3 To 500
        Range("Q" & i - 1) = GetData(FilePath, FileName, SheetName, Range("Y" & i))
    Next i
    ActiveWindow.DisplayZeros = False
End Sub

Private Function GetData(Path, File, Sheet, Rng)
    Dim Data$
    Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & Rng.Address(, , xlR1C1)
    GetData = ExecuteExcel4Macro(Data)
End Function

【讨论】:

  • 谢谢你,这很好。我想知道如何更改脚本的这一部分以添加更多列来显示。这是更改: For i = 4 To 500 Range("Q:R" & i) = GetData(FilePath, FileName, SheetName, Range("Y:Z" & i - 3))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 2014-12-16
  • 2012-07-19
相关资源
最近更新 更多