【问题标题】:Open workbooks and copy sheets打开工作簿和复印表
【发布时间】:2014-05-23 17:48:26
【问题描述】:

我需要有关宏的帮助,该宏将打开同一文件夹中的工作簿并将每个工作簿中的整个工作表复制到我的宏所在的工作簿中。

有 4 个不同的工作簿,它们都有不同数量的工作表,我需要将每个工作簿中的所有工作表合为一个。

我刚开始编程,get 和 error object required 424 就行了,上面写着: 设置 wsSheet = wbRegularesBruto.Sheets("Movimentacao").Cells.Copy

谁能指导我解决这个问题。有谁知道将所有这些工作表复制到 TH 宏工作簿中的更简单方法?

Option Explicit
Sub TrainingHoursMacro()

Dim wbTHMacro As Workbook, wsRegulares As Worksheet, wsRegularesDemitidos As Worksheet, wsTempActivos As Worksheet, wsTempJA As Worksheet, wsTempFit As Worksheet, _
wsTempDemitidos As Worksheet, wsPresenceSystem As Worksheet, wsResultados As Worksheet, wsDLList As Worksheet, wsSheet As Worksheet
Dim wbRegularesBruto As Workbook, wsMovimentacao As Worksheet, wsDemitidos As Worksheet
Dim wbTemporariosBruto As Workbook, wsTemporariosAtivos As Worksheet, wsJAAtivos As Worksheet, wsAprendizesFit As Worksheet
Dim wbPresenceSystem As Workbook, wsTPCC As Worksheet

Set wbTHMacro = Workbooks("Training Hours Macro.xlsm")
Set wsRegulares = wbTHMacro.Sheets("Regulares")
wsRegulares.Cells.ClearContents

Set wbRegularesBruto = Workbooks.Open(Filename:="H:\BX-HR\BX-INDUSTRIAL RELATIONS\HR REPRESENTATIVES\PRIVATE\HRSSC\Brazil\Training Hours Macro\Regulares Bruto.xls")
If Not wbRegularesBruto Is Nothing Then
  Set wsSheet = wbRegularesBruto.Sheets("Movimentacao").Cells.Copy

  wsSheet.Cells.Copy wsRegulares.Range("A1")
Else
  Exit Sub
End If


End Sub

【问题讨论】:

  • 删除问题行末尾的.Cells.Copy

标签: vba excel


【解决方案1】:
Set wsSheet = wbRegularesBruto.Sheets("Movimentacao").Cells.Copy

wsSheet 是一个工作表对象。我假设你想将它分配给这张表,所以你会使用:

Set wsSheet = wbRegularesBruto.Sheets("Movimentacao")

之后您可以使用Cells.Copy。你不能在一个语句中同时做到这两点。

【讨论】:

  • 感谢您的评论和示例...两者都有效...但是现在我在继续编程时遇到另一个错误说明:对象变量或未在此行设置块变量:@987654325 @ Set wsSheet = wbRegularesBruto.Sheets("Movimentacao") wsSheet.Cells.Copy wsRegulares.Range("A1") Else Exit Sub End If Set wsSheet = wbRegularesBruto.Sheets("Demitidos") wsSheet.Cells.Copy wsRegularesDemitidos.Range("A1") Exit Sub
  • 我不确定你指的是哪一行,因为你已经复制了整个代码。在尝试对每个 WorkBook 和 WorkSheet 对象执行操作之前,请确保对它们使用 Set
  • wsSheet.Cells.Copy wsRegularesDemitidos.Range("A1") 代码的最后一行...
  • 正如我所说,您需要 Set wsRegularesDemitidos 到一些工作表。它目前不涉及任何内容。
  • 好的,我会在这里尝试一下...感谢之前的回答,我会继续努力...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
相关资源
最近更新 更多