Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten Top
#2
Hallo Dante,

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

Gruß Uwe
Antworten Top
#3
(10.11.2015, 10: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")
Antworten 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
Antworten 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
Antworten 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

Antworten 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
Antworten Top
#8
Hi,

(12.11.2015, 14: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.
Antworten Top
#9
Danke! :)
Antworten Top


Gehe zu:


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