Registriert seit: 29.10.2015
Version(en): 2010/2013
10.11.2015, 11:14
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015, 12:48 von Rabe.)
Hallo, ich habe ein kleines VBA Problem, ich möchte mit Hilfe eines Buttons eine andre Excel Datei auswählen und im Anschluss das zweite Tabellenblatt kopieren und in die geöffnete Datei einfügen (auch als zweites Tabellenblatt, falls es bereits ein zweites gibt soll das überschrieben werden). Die Größe der Tabellenblätter variiert, heißt einmal ist es 2.000 Zeilen groß einmal 8.432 usw. Mein aktuelles Makro sieht folgendermaßen aus: Code: Option Explicit
Sub copieren() Dim WBZiel As Workbook, ExportDatei As Variant Dim WBQuelle As Workbook, WSZiel As Worksheet Set WBZiel = ThisWorkbook 'DateiÖffnen Dialog anbieten ExportDatei = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xlsm),*.xlsm", , "Bitte die Datei xyz.xls öffnen ...") ExportDatei = CStr(ExportDatei) If ExportDatei = "Falsch" Then Exit Sub 'öffnen der ausgewählten Datei Set WBQuelle = Workbooks.Open(ExportDatei) ActiveCell.Offset(0, 0).Range("A1:KT9000").Select ActiveCell.Activate Selection.Copy Windows("Übersicht").Activate Sheets("Market Data").Select ActiveCell.Offset(-2, -12).Range("A1:ES1").Select Sheets("Market Data").Paste End Sub
Ich bekomme als Meldung Fehler „1004“. Wo könnte mein Problem liegen? Vielleicht fällt einem von euch auch ein etwas schlankerer Code für mein Problem ein. Danke schon mal und liebe Grüße, Dante
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Dante,
von welcher in welche Datei genau soll kopiert werden? Kann auch das komplette Sheet kopiert werden?
Gruß Uwe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
10.11.2015, 12:59
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015, 13:02 von Rabe.)
(10.11.2015, 11:14)dante schrieb: Code: 'öffnen der ausgewählten Datei Set WBQuelle = Workbooks.Open(ExportDatei) ActiveCell.Offset(0, 0).Range("A1:KT9000").Select ActiveCell.Activate Selection.Copy Windows("Übersicht").Activate Sheets("Market Data").Select ActiveCell.Offset(-2, -12).Range("A1:ES1").Select Sheets("Market Data").Paste
was macht dieser Code? Hast Du den aufgenommen oder zusammenkopiert oder selber geschrieben? Ich will Dich nicht beleidigen, aber ich glaube, das ist Mist. Ne, halt, das soll ich ja nicht schreiben, also: Ich glaube, der Code wird nie funktionieren. Du markierst einen Bereich, dann aktivierst Du die aktive Zelle, dann kopierst Du diese Zelle, dann aktivierst Du das Fenster "Übersicht", gehst auf Blatt "MarketData", markierst wieder einen Bereich, dann fügst Du den kopierten Bereich in einen kleineren ein. Du kannst keinen Bereich über Spalte A bis KT in einen Bereich A bis ES einfügen. Was soll denn das ' ActiveCell.Offset(0, 0).Range("A1:KT9000").Select' machen? Was soll da das ActiveCell.Offset(0, 0). oder ActiveCell.Offset(-2, -12).? vielleicht so Code: Set WBQuelle = Workbooks.Open(ExportDatei) Range("A1:KT9000").Copy WBZiel.Sheets("Market Data").Range("A1:ES1").Paste
oder so: Code: Set WBQuelle = Workbooks.Open(ExportDatei) Range("A1:KT9000").Copy WBZiel.Sheets("Market Data").Range("A1:ES1")
Registriert seit: 29.10.2015
Version(en): 2010/2013
Hallo, danke erstmal für die Antworten. :) Haha, oh okay, dann lag ich wohl mal richtig daneben ;) ich wollte mir ein Makro, dass ich online gefunden hatte anpassen und hab dafür teilweise eins aufgezeichnet und eingefügt, ich bin wohl schlichtweg nicht begabt ;) Komme auch gerade nicht wirklich mit deinen Anweisungen zurecht, Rabe :s Im Endeffekt, will ich eine Datei auswählen können (Name + Speicherort variieren) und das Tabellenblatt 2 (Market Data <-- Name bleibt gleich) kopieren, dann soll das Tabellenblatt 2 in meiner aktiven Datei (Market Data <-- Name bleibt auch hier gleich) überschrieben werden. Die andere Datei dann wieder schließen und evtl. noch eine Box mit „Erfolgreich übertragen“ oder so auftauchen (hier behaupte ich, dass ich das aber sogar selbst hinbekomme , also das mit der Box ;)) Danke für eure Zeit +Hilfe :) Liebe Grüße, Dante
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Dante, teste mal damit: Modul Modul1Option Explicit
Sub copieren() Dim WBZiel As Workbook, ExportDatei As String Dim WBQuelle As Workbook Set WBZiel = ThisWorkbook 'DateiÖffnen Dialog anbieten ExportDatei = Application.GetOpenFilename("Micrsoft Excel-Dateien (*.xlsm),*.xlsm", , "Bitte die Datei xyz.xls öffnen ...") If Not CVar(ExportDatei) = False Then Application.DisplayAlerts = False ThisWorkbook.Sheets("Market Data").Delete Application.DisplayAlerts = True 'öffnen der ausgewählten Datei Set WBQuelle = Workbooks.Open(ExportDatei) WBQuelle.Sheets("Market Data").Copy ThisWorkbook WBQuelle.Close False End If End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0 Gruß Uwe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
10.11.2015, 16:03
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2015, 16:04 von Rabe.)
Hi Dante, sooo schlecht war es doch auch wieder nicht, Dein Makro. Hier ein funktionierendes, das nur die Daten rüberkopiert: Option Explicit
Sub copieren() Dim WBZiel As Workbook, ExportDatei As Variant Dim WBQuelle As Workbook, WSZiel As Worksheet Set WBZiel = ThisWorkbook Application.ScreenUpdating = False 'DateiÖffnen Dialog anbieten ExportDatei = Application.GetOpenFilename("Excel-Dateien, *.xl*", , "Bitte die Datei zum Kopieren öffnen ...") ExportDatei = CStr(ExportDatei) If ExportDatei = "Falsch" Then Exit Sub 'öffnen der ausgewählten Datei Set WBQuelle = Workbooks.Open(ExportDatei) 'kopieren des Blattinhaltes und Schließen der Quell-Datei With WBQuelle .Sheets("Tabelle1").Range("A1:KT9000").Copy WBZiel.Sheets("Market Data").Range("A1") .Close savechanges:=False End With WBZiel.Sheets("Market Data").Activate Application.ScreenUpdating = True End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0
Registriert seit: 29.10.2015
Version(en): 2010/2013
Hey, oh super vielen, vielen Dank euch! :D Funktioniert alles jetzt perfekt :) Ich hätte nur noch eine Frage/Bitte, ich habe die Excel Datei so angezeigt, dass er mir in der oberen Häfte Tabellenblatt1 anzeigt und in der unteren Tabellenblatt zwei, wenn ich die Datei importiere zeigt er mir bei beiden Tabellenblatt zwei an. Gibt es eine Möglichkeit, dass er mir die Ansicht beibehält/wiederherstellt? :) Liebe Grüße, Dante
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, (12.11.2015, 15:11)dante schrieb: Gibt es eine Möglichkeit, dass er mir die Ansicht beibehält/wiederherstellt? :) mache mal vor diese Zeile: WBZiel.Sheets("Market Data").Activate ein ' damit wird sie in einen Kommentar umgewandelt und das Blatt nicht angezeigt.
Registriert seit: 29.10.2015
Version(en): 2010/2013
|