Tabellenblatt importieren aus anderer Excel Datei
#1
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
Top
#2
Hallo Dante,

von welcher in welche Datei genau soll kopiert werden?
Kann auch das komplette Sheet kopiert werden?

Gruß Uwe
Top
#3
(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")
Top
#4
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
Top
#5
Hallo Dante,

teste mal damit:

Modul Modul1
Option 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
Top
#6
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

Top
#7
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
Top
#8
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.
Top
#9
Danke! :)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste