说明-使用PasteSpecial复制数据VBA代码

说明-使用PasteSpecial复制数据VBA代码,vba,excel,runtime,Vba,Excel,Runtime,我有这两本作业本 我想将第一个工作簿中某些列的数据传输到工作簿2中的给定工作表 我得到一个运行时错误(1004)。 方法“对象范围”工作表失败 代码中的这一行出现错误 SummarySheet.Range(columnaddress & "8:" & columnaddress & lastrow).Copy SummarySheet.Range(columnaddress和“8:”&columnaddress和lastrow)。复制 这是完整的代码 Sub RectangleRoundedCo

我有这两本作业本

我想将第一个工作簿中某些列的数据传输到工作簿2中的给定工作表

我得到一个运行时错误(1004)。 方法“对象范围”工作表失败

代码中的这一行出现错误

SummarySheet.Range(columnaddress & "8:" & columnaddress & lastrow).Copy SummarySheet.Range(columnaddress和“8:”&columnaddress和lastrow)。复制 这是完整的代码

Sub RectangleRoundedCorners1_Click()

  Application.ScreenUpdating = False

  Dim MacroBook As Workbook, SummaryBook As Workbook, BSSBook As Workbook, _
    SummarySheet As Worksheet, TwoGonlyER As Worksheet, threeGswapRoll As Worksheet, _
    threeGswapER As Worksheet, fourGprData As Worksheet, threeGpRData As Worksheet
  Dim onlyER As Range, rolloutER As Range, swapER As Range, prData As Range, _
    gPRdata As Range, FolderPathForSummary As String, lastrow As Integer

  Set MacroBook = ThisWorkbook

  'Summary Book Open
  FolderPathForSummary = MacroBook.Worksheets("Tool").Range("D8")

  FolderPath = MacroBook.Worksheets("Tool").Range("D11")

  If Dir(FolderPath, vbDirectory) = "" Then
    MsgBox "Please enter a valid folder path to save the file!"
    Exit Sub
  End If

  If Not Dir(FolderPathForSummary) <> "" Then
    MsgBox " Summary file doesn't exist in your mentioned address. Please   check again!  "
    Exit Sub
  End If

  Set SummaryBook = Workbooks.Open(FolderPathForSummary)
  Set SummarySheet = SummaryBook.Worksheets("Summary Data")

  lastrow = SummarySheet.Cells(Rows.Count, "A").End(xlUp).Row

  'BSS Tracker Open
  Set BSSBook = Workbooks.Add
  BSSBook.SaveAs (FolderPath & "BSS Tracker " & Format(CStr(Now), "ddmmmyyyyhhmmss") & ".xlsx")

  MacroBook.Worksheets("2G Only ER").Copy before:=BSSBook.Sheets(1)
  Set TwoGonlyER = BSSBook.Worksheets("2G Only ER")

  MacroBook.Worksheets("3G Swap & 4G ROllout ER").Copy before:=BSSBook.Sheets(1)
  Set threeGswapRoll = BSSBook.Worksheets("3G Swap & 4G ROllout ER")

  MacroBook.Worksheets("3G & 4G Swap ER").Copy before:=BSSBook.Sheets(1)
  Set threeGswapER = BSSBook.Worksheets("3G & 4G Swap ER")

  MacroBook.Worksheets("4G PR Data").Copy before:=BSSBook.Sheets(1)
  Set fourGprData = BSSBook.Worksheets("4G PR Data")

  MacroBook.Worksheets("3G PR Data").Copy before:=BSSBook.Sheets(1)

  Set threeGpRData = BSSBook.Worksheets("3G PR Data")
  Set swapER = threeGswapER.Range("A3:P3")

  For Each entry In swapER

    columnaddress = entry.Value

    SummarySheet.Range(columnaddress & "8:" & columnaddress & lastrow).Copy
    entry.PasteSpecial

  Next entry

  BSSBook.Save
  BSSBook.Close

  SummaryBook.Save
  SummaryBook.Close

  MsgBox "BSS Tracker successfully generated!"

End Sub
次矩形圆角1_单击()
Application.ScreenUpdating=False
Dim MacroBook作为工作簿,Summary Book作为工作簿,BSSBook作为工作簿_
汇总表作为工作表,两个测角器作为工作表,三个测角器作为工作表_
三个GsWaper作为工作表,四个GpRDATA作为工作表,三个GpRDATA作为工作表
Dim onlyER作为范围,rolloutER作为范围,swapER作为范围,prData作为范围_
gPRdata作为范围,FolderPathForSummary作为字符串,lastrow作为整数
设置MacroBook=ThisWorkbook
"小结书打开"
FolderPathForSummary=MacroBook.Worksheets(“工具”).Range(“D8”)
FolderPath=MacroBook.Worksheets(“工具”).Range(“D11”)
如果Dir(FolderPath,vbDirectory)=“”,则
MsgBox“请输入有效的文件夹路径以保存文件!”
出口接头
如果结束
如果不是目录(FolderPathForSummary)”,则
MsgBox“您提到的地址中不存在摘要文件。请再次检查!”
出口接头
如果结束
设置SummaryBook=工作簿。打开(FolderPathForSummary)
Set SummarySheet=SummaryBook.Worksheets(“摘要数据”)
lastrow=SummarySheet.Cells(Rows.Count,“A”).End(xlUp).Row
“BSS跟踪器打开
设置BSSBook=工作簿。添加
BSSBook.SaveAs(文件夹路径和“BSS跟踪器”以及格式(CStr(现在),“ddmmmyyyyyhmmss”)&和.xlsx)
MacroBook.工作表(“仅2G ER”)。之前的副本:=BSSBook.工作表(1)
设置TwoGonlyER=BSSBook.Worksheets(“仅2G ER”)
MacroBook.Worksheets(“3G交换和4G卷展器”)。之前复制:=BSSBook.Sheets(1)
设置三个gswaproll=BSSBook.Worksheets(“3G交换和4G卷展器”)
MacroBook.工作表(“3G和4G交换ER”)。之前的副本:=BSSBook.工作表(1)
设置三个gswaper=BSSBook.worksheet(“3G和4G交换服务器”)
MacroBook.工作表(“4G PR数据”)。之前复制:=BSSBook.工作表(1)
Set fourGprData=BSSBook.Worksheets(“4G PR数据”)
MacroBook.工作表(“3G PR数据”)。之前的副本:=BSSBook.工作表(1)
设置3GPRDATA=BSSBook.Worksheets(“3G PR数据”)
设置抽汲器=三根抽汲器范围(“A3:P3”)
对于swapER中的每个条目
columnaddress=entry.Value
SummarySheet.Range(columnaddress和“8:”&columnaddress和lastrow)。复制
entry.PasteSpecial
下一个条目
BSSBook.Save
BSSBook,关闭
总结手册,保存
总结本,结束
MsgBox“已成功生成BSS跟踪器!”
端接头

根据您的代码,columnaddress应该是字符串变量,它应该包含列字母。像

Dim columnaddress As String
columnaddress = "A"
还有其他变量,如SummarySheet(指源工作表)和entry sheet(指目标工作表)

变量lastrow应该是一个长变量,它引用了包含数据的最后一行

所以,如果lastrow是25,columnaddress是“A”,那么按照下面的行

SummarySheet.Range(columnaddress & "8:" & columnaddress & lastrow).Copy

然后将摘要工作表中的A8:A25范围复制并粘贴到条目工作表上。

如果您在问题中输入的内容是从VBE复制/粘贴的,则代码将不起作用。我有两本工作簿。我想将工作簿1中所需列的数据传输到工作簿2的所需工作表中。我遇到代码错误。[link](1drv.ms/f/s!AlgPDzGNgeAvgRiR7PqmpUg46TnW)在对主要问题的评论中添加了链接。稍微重写一下。如果您告诉我们您遇到的错误的确切原因,这可能会帮助我们找到答案。我已格式化您的VBA,以便更易于复制/粘贴。我有两本工作簿。我想将工作簿1中所需列的数据传输到工作簿2的所需工作表。我遇到代码错误。[链接]()@AamirHussain这是一个完全不同的问题。我已经回答了你原来的问题。如果你有一个新的要求,那么你应该提出一个新的问题。同时花点时间接受答案,将问题标记为已解决。:)我的问题是一样的,先生。我的代码有错误。首先,我发布了一行代码,其中我有错误,你给了我一个答案,但我仍然不清楚这就是为什么我发布完整代码的Excel链接。你只是想解释一下你发布的代码行,我解释了。解释足以让您根据需要调整代码。如果您调整了它,但仍然不起作用,请编辑您的问题并添加您尝试的代码。请记住,这不是一个像“请为我编写代码”这样的代码编写服务。@AamirHussain:这是一个谜题还是什么来找出代码中的错误?如果您有错误,请在问题中包含该错误。