2016-05-24 9 views
0

Ich mag würde, eine Arbeitsmappe öffnen und aus dem geöffneten Arbeitsmappe Blatt zu meinem worbook Blatt wie das kopieren:Kopieren von Daten aus einem anderen Excel-Datei mit VBA-Makro

Private Sub Workbook_Open() 
    Dim openedFile As String 
    Dim sourcebook As Workbook 
    openedFile = Application.GetOpenFilename(fileFilter:="Excel Macro-Enabled Workbook (*.xlsm), *.xlsm") 'Source book opening 

    Set sourcebook = Workbooks.Open(openedFile) 

    Application.CutCopyMode = True 
    sourcebook.Worksheets("source_sheet").Range("A1:L100").Copy 
    ThisWorkbook.Worksheets("dest_sgheet").Range("A1").PasteSpecial Paste:=xlPasteValues 
    Application.CutCopyMode = False 
    Call sourcebook.Close(False) 
End Sub 

ich diese Fehlermeldung bekam, nachdem ich diesen Code runing :

Laufzeitfehler ‚1004" : Pastespecial-Methode der Range-Klasse

fehlgeschlagen Es ist occour in dieser Zeile:

ThisWorkbook.Worksheets("dest_sheet").Range("A1").PasteSpecial Paste:=xlPasteValues

Antwort

0

try Aktivieren der Arbeitsmappe zuerst („Diese Arbeitsmappe“) und dann das Blatt zu aktivieren, wenn Sie möchten die Daten einfügen. Der Fehler tritt auf, weil entweder der Bereich nicht sichtbar ist oder existiert.

0

Ihr Code sollte funktionieren.

ThisWorkbook.Worksheets("dest_sgheet").Range("A1").PasteSpecial Paste:=xlPasteValues 

mit diesem: diese Zeile ändern

ThisWorkbook.Worksheets("dest_sheet").Range("A1").PasteSpecial Paste:=xlPasteValues 

EDIT Basierend auf OP Kommentare zu 25-05-2016 Ich habe das Programm laut OP-Code erneut ausführen, nach der Korrektur kleiner Tippfehler bei der Rechtschreibung Programm läuft erfolgreich ohne Probleme. Ich erhalte keinen Laufzeitfehler 1004. Der Screenshot zeigt, dass die Daten korrekt kopiert werden.

screenshot showing input and output

+0

Auch diese Linie ist fast identisch, mit Ausnahme der Blattnamen, aber es ist irrelevant. – Twi

+0

@Twi Ich habe Ihren Code anhand der Beispieldaten getestet und festgestellt, dass er einwandfrei funktioniert. Wenn Sie Zweifel haben, lassen Sie es mich wissen. – skkakkar

+0

@Twi Wir bemühen uns, den Code unserer Kollegen zu überprüfen, um ihnen zu helfen. Das grundlegende Problem ist, ob dieser von Ihnen erarbeitete Programmcode fehlerhaft ist, was zur Generierung des Laufzeitfehlers 1004 führt. Wir bemühen uns, Beispieldaten zu kompilieren und Ihren Code zu analysieren, damit er funktioniert. Normalerweise werden solche kleinen Dinge durch Kommentare informiert. In diesem Fall gab es bereits eine Antwort, die Ihr Problem offenbar nicht vollständig ansprach und in Anbetracht der Tatsache, dass ich meine wertvolle Zeit damit verbracht habe, Ihr Problem zu analysieren, wurde es versehentlich als Antwort gegeben. Ich entschuldige mich, wenn es deine Gefühle verletzt hat. – skkakkar

Verwandte Themen