wake-up-neo.com

Kopieren und Einfügen von Daten mit VBA-Code

Ich habe eine Schaltfläche in einer Tabelle, über die der Benutzer beim Drücken eine Datei öffnen und dann die Spalten A-G der Tabelle "Daten" kopieren und die Daten aus diesen Spalten in die aktuelle Tabelle einfügen kann.

Ich habe einen logischen Fehler im Code. es wird ausgeführt, aber es fügt die Auswahl an der falschen Stelle ein.

Ich habe Probleme beim Verweisen auf die beiden Arbeitsmappen.

Hier ist mein Code:

Sub Button1_Click()
    Dim Excel As Excel.Application
    Dim wb As Excel.Workbook
    Dim sht As Excel.Worksheet
    Dim f As Object

    Set f = Application.FileDialog(3)
    f.AllowMultiSelect = False
    f.Show

    Set Excel = CreateObject("Excel.Application")
    Set wb = Excel.Workbooks.Open(f.SelectedItems(1))
    Set sht = wb.Worksheets("Data")

    sht.Activate
    sht.Columns("A:G").Select
    Selection.Copy
    Range("A1").Select
    ActiveSheet.Paste

    wb.Close
End Sub
13
spookymodem

Verwenden Sie die PasteSpecial-Methode:

sht.Columns("A:G").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues

ABER Ihr großes Problem ist, dass Sie Ihr ActiveSheet in "Daten" ändern und nicht zurück ändern. Sie müssen die Schritte Aktivieren und Auswählen gemäß meinem Code nicht ausführen (dies setzt voraus, dass sich Ihre Schaltfläche auf dem Blatt befindet, auf das Sie kopieren möchten).

21
Lance Roberts

Nach dieser Diskussion denke ich, dass dies dann der Code sein sollte.

Sub Button1_Click()
    Dim Excel As Excel.Application
    Dim wb As Excel.Workbook
    Dim sht As Excel.Worksheet
    Dim f As Object

    Set f = Application.FileDialog(3)
    f.AllowMultiSelect = False
    f.Show

    Set Excel = CreateObject("Excel.Application")
    Set wb = Excel.Workbooks.Open(f.SelectedItems(1))
    Set sht = wb.Worksheets("Data")

    sht.Activate
    sht.Columns("A:G").Copy
    Range("A1").PasteSpecial Paste:=xlPasteValues


    wb.Close
End Sub

 "Lassen Sie mich wissen, ob dies richtig ist oder ein Schritt verfehlt wurde. Danke.

1
D1g1t4Lnrg