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
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).
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.