Excel 复制并粘贴在最后一行VBA问题之后

Excel 复制并粘贴在最后一行VBA问题之后,excel,vba,Excel,Vba,我的代码有问题。它可以正确地复制/粘贴。然而,我认为有一些棘手的问题。当我尝试更新我的动态表时,它会显示一条消息,说明我当前工作的WB已经有数据,并且如果我想替换它。当我选择Yes/No(是/否)时,它会立即在我的表中显示另一列,表示该实用程序中未使用81个寄存器。当我用手做每件事时都没有问题。所以,我想我的宏有问题 Option Explicit Sub DailyTrans_MDM() Call CopyPaste End Sub Sub CopyPaste() Di

我的代码有问题。它可以正确地复制/粘贴。然而,我认为有一些棘手的问题。当我尝试更新我的动态表时,它会显示一条消息,说明我当前工作的WB已经有数据,并且如果我想替换它。当我选择Yes/No(是/否)时,它会立即在我的表中显示另一列,表示该实用程序中未使用81个寄存器。当我用手做每件事时都没有问题。所以,我想我的宏有问题

Option Explicit

Sub DailyTrans_MDM()

    Call CopyPaste
End Sub

Sub CopyPaste()

    Dim vFile As Variant
    Dim folderPath As String
    Dim wbCopyTo As Workbook
    Dim wsCopyTo As Worksheet
    Dim wbCopyFrom  As Workbook
    Dim wsCopyFrom As Worksheet

    vFile = Dir(folderPath & "*.xl*")
    Set wbCopyTo = ActiveWorkbook
    Set wsCopyTo = ActiveSheet
        Do While vFile <> ""        
            Application.ScreenUpdating = False    
            vFile = Application.GetOpenFilename("Daily Reports (*.xl*)," & "*.xl*", 1, "Select Report", "Open File", False)
            If TypeName(vFile) = "Boolean" Then
                Exit Sub
            Else
                Set wbCopyFrom = Workbooks.Open(vFile)
                Set wsCopyFrom = wbCopyFrom.Worksheets("ReporteCifrasControl")
            End If
    '--------------------------------------------------------------------------------------
            wsCopyFrom.Range("A2:M" & wsCopyFrom.Range("A" & Rows.Count).End(xlUp).row).Copy
            wsCopyTo.Range("A" & wsCopyTo.Range("A" & Rows.Count).End(xlUp).row + 1).PasteSpecial xlPasteValuesAndNumberFormats
            wbCopyFrom.Close SaveChanges:=False

            Dim rngCopy As Range, rngPaste As Range
                With ActiveSheet
                    Set rngCopy = .Range(.Range("A2"), Cells(2, Columns.Count).End(xlToLeft))
                    Set rngPaste = .Range(.Range("A2"), .Cells(Rows.Count, 1).End(xlUp)).Resize(, rngCopy.Columns.Count)
                End With
            rngCopy.Copy
            rngPaste.PasteSpecial xlPasteFormats
            Application.CutCopyMode = False
        Loop

End Sub



我相信你想这么做

将第2行从列A复制到上次使用的列LC 将其粘贴到A列的第一个未使用的行LR中 代码中缺少了一些要限定的对象。如果不打算使用With块,则使用With块没有意义


刚刚意识到代码中有多个副本/粘贴。如果这是错误的,请使用此处的格式修改另一个。

粘贴范围只能是一个单元格。无需调整粘贴范围的大小以匹配复制范围。简化这些可能会帮助您发现错误。看起来您只是在复制一行。现在确定如果是这样intentional@urdearboy在子状态中,我只是将一行复制到另一行&如果我不将复制的数据粘贴到其他工作簿的格式中,我打算对调整大小的操作使复制的数据与工作表中的数据具有相同的格式。您在这里复制的是列范围,而不仅仅是一行。如果问题是子状态,为什么会有这么多代码?似乎我们不需要阅读其中的大部分内容。请将您的问题仅显示给我们您需要帮助的相关代码。如果您有多个问题,那么每个问题都应该有自己的帖子。已编辑@Urderboy问题不在于状态,而是复制粘贴宏,但不知道如何解决,这就是我寻求帮助的原因。@Urderboy是的,通过选择一行,例如,最后一个可用的数据并将格式粘贴到我刚才复制的新数据中,我将为整个粘贴的数据提供其余数据的格式
Dim LC As Long
Dim LR As Long

With ActiveSheet
    LC = .Cells(2, .Columns.Count).End(xlToLeft).Column
    LR = .Range("A" & .Rows.Count).End(xlUp).Row

    Set rngCopy = .Range(.Cells(1, 2), .Cells(LC, 2))
    Set rngPaste = .Range("A" & LR)
End With

rngCopy.Copy
rngPaste.PasteSpecial xlPasteFormats