【问题标题】:How to copy all column data from one excel to another excel sheet如何将所有列数据从一个excel复制到另一个excel表
【发布时间】:2018-06-19 08:43:30
【问题描述】:

我正在尝试将所有列数据从一个 excel 的列 range A:AU 复制到我编写的列 A:AU 的同一范围内的另一个 excel代码。

两个 excel 都放置在我计算机中的不同位置,我已经在我想要粘贴数据的 excel 中编写了我的 vba 代码,而不是在我复制数据的 excel 中。

我从中复制数据的 excel 名称是 "EXRData_08.01.2018.xlsx",工作表名称是 "EXR_extract_EX"

& 我要粘贴数据和编写 vba 代码的 excel 名称是 "UnattendedData.xlsm",工作表名称是 "RawData" .

我正在尝试从第一个 excel 中复制 range A:AU 中的整个列内容,并将其粘贴到另一个存在代码的 excel 中的相同 range of A:AU 中但我收到错误,它没有运行。请帮助我解决这个问题。

下面是我的代码-

Sub panos()
  Dim r1 As Range, r2 As Range, N As Long

  Workbooks.Open "\01_Tool\Data\EXRData_08.01.2018.xlsx"
  N = Sheets("EXR_extract_EX").Cells(Rows.Count, "A:AU").End(xlUp).Row
  Set r1 = Sheets("EXR_extract_EX").Range("A:AU" & N)

  Workbooks.Open "_Master\Saurabh\UnattendedData.xlsm"
  Set r2 = Sheets("RawData").Range("A:AU")

  r1.Copy r2
End Sub

【问题讨论】:

  • 你得到了什么错误,在哪一行?
  • 我从这里开始出错 - N = Sheets("EXR_extract_EX").Cells(Rows.Count, "A:AU").End(xlUp).Row Set r1 = Sheets("EXR_extract_EX" ).Range("A:AU" & N) --对象定义错误。 @Peh
  • Range("A:AU" & N) 不是有效范围,对于整列,它应该是 Range("A:AU") 或类似 Range("A" & N & ":AU" & N) 的东西。我还建议使用Workbooks.Open 中的完整文件路径并为表格指定工作簿,否则您会遇到问题。此外,UnattendedData.xlsm 也不需要打开,因为在您运行该文件中的代码时,它已经打开了。

标签: vba excel


【解决方案1】:
  1. 您无需打开UnattendedData.xlsm。如果这是您从中运行代码的工作簿,则它已打开。
  2. 使用Workbooks.Open 的完整路径,否则会遇到问题。
  3. 尽可能使用Worksheets 而不是SheetsSheets 还包含图表等。
  4. 如果您使用WorksheetsSheets,请始终将工作簿指定为wb.Worksheets(…)。否则 Excel 会猜测工作簿并可能会失败。

您的代码中的实际问题是Range("A:AU" & N) 不是有效范围。例如。对于N=15,这会导致"A:AU15" 无效。它应该是"A15:AU15""A:AU"

如果列的其余部分为空,我怀疑使用其中一个或另一个在性能方面有很大优势,所以我会复制整个列。


例子:

Option Explicit 'make sure all variables have to be declared correctly

Public Sub CopyRanges()
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\YOUR_FULL_PATH_HERE\01_Tool\Data\EXRData_08.01.2018.xlsx")

    Dim shtSource As Worksheet
    Set shtSource = wb.Worksheets("EXR_extract_EX")
                   '^-- Always specify a wb for a sheet

    Dim shtDestination As Worksheet
    Set shtDestination = ThisWorkbook.Worksheets("RawData")
                         '^-- here we specify the workbook we are running  the code in
    'copy the ranges
    shtSource.Range("A:AU").Copy shtDestination.Range("A:AU")

    wb.Close SaveChanges:=False 'don't forget to close the workbook
End Sub

请注意,如果您需要相对于ThisWorkbook 路径的路径,您可以使用类似

ThisWorkbook.Path & "\01_Tool\Data\EXRData_08.01.2018.xlsx"

如果它位于相同的基本路径但不同的子文件夹中,您可以使用 \..\ 向后走以退出子文件夹,例如

ThisWorkbook.Path & "\..\..\01_Tool\Data\EXRData_08.01.2018.xlsx"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2021-03-16
    • 2016-06-20
    相关资源
    最近更新 更多