Excel VBA代码不会粘贴数据

时间:2016-06-07 19:12:50

标签: excel vba excel-vba macros

我有一个宏(在StackOverflow上找到),它允许用户从他们的桌面选择工作簿,并将该工作表的A列中的所有信息复制到主工作簿中的A列。但是,宏不会粘贴数据。它只是在它想要粘贴的区域留下虚线。非常感谢任何帮助。

Sub PopulateUploaderFunds()

Dim uploadfile As Variant
Dim uploader As Workbook
Dim CurrentBook As Workbook

Set CurrentBook = ActiveWorkbook
MsgBox ("Please select uploader file to be reviewed")
uploadfile = Application.GetOpenFilename()
    If uploadfile = "False" Then
       Exit Sub
    End If
Workbooks.Open uploadfile
Set uploader = ActiveWorkbook
With uploader
    Application.CutCopyMode = False
    Range("A:A").Copy
End With
CurrentBook.Activate
Sheets("Load Barcodes").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

2 个答案:

答案 0 :(得分:0)

您引用的代码应该有效。复制的单元格周围出现虚线(从用户选择的上传工作簿),而不是“选择性粘贴”操作的目标范围。

代码未指定要从中复制A列的工作表,因此它将复制保存工作簿时任何工作表的第一列。尝试指定工作表代码,例如Sheet1.Range("A:A")

答案 1 :(得分:0)

您发布的代码应该可以使用,但作为学习指南,这里有一些提示:

  • 您无需.Activate打开的工作簿,Open操作 已经这样做了
  • 您的CurrentBook也不需要,只需在Copy中指定来源和目的地就足够了
  • @ findwindow的观点是确定包含数据的最后一行,只复制/粘贴该范围区域,而不是整列
  • 注意你的变量名称,它们可以真正帮助你清楚地了解事情的发展方向
Option Explicit

Sub PopulateUploaderFunds()
    Dim uploadFilename As Variant
    Dim currentBook As Workbook
    Dim uploadBook As Workbook
    Dim barcodeSheet As Worksheet
    Dim uploadSheet As Worksheet
    Dim lastRow As Long

    Set currentBook = ActiveWorkbook
    Set barcodeSheet = currentBook.Sheets("Load Barcodes")

    uploadFilename = Application.GetOpenFilename( _
                                   FileFilter:="Excel Workbooks,*.xlsx;*.xls", _
                                   Title:="Select Uploader file to be reviewed")
    If uploadFilename <> "False" Then
        Set uploadBook = Workbooks.Open(Filename:=uploadFilename, ReadOnly:=True)
        Set uploadSheet = uploadBook.Sheets("Sheet1")
        lastRow = uploadSheet.Cells(uploadSheet.Rows.Count, "A").End(xlUp).Row
        uploadSheet.Range("A1").Resize(lastRow, 1).Copy _
                     Destination:=barcodeSheet.Range("A1").Resize(lastRow, 1)
        uploadBook.Close
    End If

End Sub