2016-06-07 16 views
0

Ich habe ein Makro (gefunden auf StackOverflow), das einem Benutzer ermöglichen soll, eine Arbeitsmappe von ihrem Desktop auszuwählen, und alle Informationen in Spalte A dieses Blattes in Spalte A kopiert im Hauptarbeitsbuch. Allerdings fügt das Makro die Daten nicht hinzu. Es lässt einfach die gepunktete Linie um den Bereich herum, den es einzufügen beabsichtigt. Jede Hilfe wird sehr geschätzt.Excel VBA-Code fügt keine Daten ein

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

gehen Sie Werte so einfach eingestellt Bereiche miteinander einfügen. Kopieren Sie auch nicht die gesamte Spalte. – findwindow

+0

Ich verstehe nicht ganz, was Sie sagen wollen? Sollte ich so etwas tun: 'Bereich (" A1: A100 "). Wert = Blätter (" Barcodes laden "). Bereich (" A1: 100 "). Wert' – Tokioi

Antwort

0

Ihr Code wie geschrieben funktionieren sollte, sondern als Lernbegleiter hier sind ein paar Tipps:

  • Sie brauchen nicht auf die geöffnete Arbeitsmappe zu .Activate, die Open Aktion bereits tut das
  • Es ist nicht notwendig für Ihre entweder
  • @ findwindow's Punkt ist, die letzte Zeile zu bestimmen, die Ihre Daten enthält, und nur diesen Bereichsbereich kopieren und einfügen, nicht die gesamte Spalte
  • Achten Sie auf Ihre Variablennamen, können sie Ihnen wirklich klar halten helfen, wo die Dinge
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 
+0

Vielen Dank für die hilfreichen Vorschläge, meine VBA ist grob und alle Tipps sind sehr hilfreich. Dieser Code funktionierte für das, was ich brauchte. – Tokioi

0

Der von Ihnen angegebene Code sollte funktionieren. Die gepunkteten Linien erscheinen um die Zellen, die kopiert werden (aus der vom Benutzer ausgewählten Arbeitsmappe für den Uploader), nicht um den Zielbereich für die Operation "Einfügen Spezial".

Der Code gibt nicht an, aus welchem ​​Blatt die Spalte A kopiert werden soll. Er kopiert also die erste Spalte des aktuellen Blattes, wenn die Arbeitsmappe gespeichert wurde. Versuchen Sie, den Codenamen des Blattes anzugeben, z. B. Sheet1.Range("A:A").

+0

Okay, ich verstehe das besser, danke für die Spitze. – Tokioi

Verwandte Themen