我正在尝试将所有列数据从一个excel的列范围A:AU 复制到我写的 A:AU 列的另一个excel中代码。
这两个excel都放在我的计算机的不同位置,我已经在我想要粘贴数据的excel中写了我的vba代码,而不是在复制数据的excel中。
复制数据的Excel的名称是" EXRData_08.01.2018.xlsx" ,工作表名称是" EXR_extract_EX"
&安培;我要粘贴数据的excel名称以及我写的vba代码的位置是" UnattendedData.xlsm" ,工作表名称是" RawData&# 34; 。
我正在尝试从第一个Excel中复制范围A:AU 中的整个列内容,并将其粘贴到另一个存在代码的excel中的相同范围的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
答案 0 :(得分:1)
UnattendedData.xlsm
。如果这是您运行的工作簿,则代码已经打开。Workbooks.Open
的完整路径,否则会遇到问题。Worksheets
代替Sheets
。 Sheets
还包含图表等。Worksheets
或Sheets
,请始终指定工作簿,如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"