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

问题描述:

我有这两个工作簿。说明 - 使用PasteSpecial复制数据VBA代码

欲某些列的数据在第一个工作簿中工作簿2.

我正在运行时(1004)的误差传输到一个给定的片材。 “对象范围”的方法失败的工作表

我收到错误在此行中的代码

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

下面是完整的代码。

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 
+0

如果您在问题中输入的内容是从VBE复制/粘贴的,则该代码将不起作用。 – YowE3K

+0

我有两个工作簿。我想将工作簿1中所需列的数据传输到需要的工作簿2.我在代码中出错。 [链接](1drv.ms/f/s!AlgPDzGNgeAvgRiR7PqmpUg46TnW) –

+0

在主要问题的评论中增加了链接。一点点重写。如果你告诉我们你得到的错误是什么,那可能会帮助我们找到答案。 – LondonRob

根据你的代码,columnaddress应该是字符串变量,它应该包含列字母。类似于

Dim columnaddress As String 
columnaddress = "A" 

还有其他一些变量,如SummarySheet,它引用源表单和引用目标表单的表单表单。

变量lastrow应该是一个很长的变量,它是指数据的最后一行。

所以,如果是LASTROW说25和columnaddress是“A”,则每以下行

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

接着范围A8:从SummarySheet A25被复制并粘贴到条目表。

+0

我有两个工作簿。我想将工作簿1中所需列的数据传输到需要的工作簿工作表2.我在代码中出现错误。 [链接](https://1drv.ms/f/s!AlgPDzGNgeAvgRiR7PqmpUg46TnW) –

+0

@AamirHussain这完全是一个不同的问题。我已经回答你原来的问题。如果你有新的要求,那么你应该开一个新的问题。也花一点时间接受答案,将您的问题标记为已解决。 :) – sktneer

+0

我的问题是同样的先生。我得到代码中的错误。首先我发布代码行,我得到错误,你给了我一个答案,但我仍然不清楚,这就是为什么我发布Excel的链接完整的代码 –