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
	 
 
 
	 
 |