Importieren eines Arbeitsblattes per Button
#1
Hallo,

Ich möchte Tabellenblatt 1 von Datei A in ein neues Tabellenblatt von Datei B importieren. Das ganze soll per Auswahldialog funktionieren.
Folgendes Makro habe ich im Internet gefunden und das scheint auch zu funktionieren. Leider wird dabei das aktuelle Tabellenblatt überschrieben, anstatt ein neues zu erstelllen. Kann mir jemand sagen, was ich hier ändern muss, damit das ganze stattdessen in ein neues Blatt kopiert wird?

Danke und Gruß
Sebastian

Code:
Sub Import_mit_Dialog()  
Dim Quelle As Object, Ziel As Object
Dim Datei As String

On Error GoTo Fehler

'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel-Dateien(*.xlsx),*xlsx")

'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then  
  MsgBox "keine Datei ausgewählt", , "Abbruch"
  Exit Sub
End If

'MsgBox "Ausgewählte Datei: " & Datei, , ""

'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei

Set Quelle = ActiveWorkbook.Worksheets(1)
Set Ziel = ThisWorkbook.Worksheets(1)

'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(1, 1)

ActiveWorkbook.Close

'Speicher freigeben
Set Quelle = Nothing  
Set Ziel = Nothing  

Exit Sub  

Fehler:
Set Quelle = Nothing  
Set Ziel = Nothing  

    MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
    & "Beschreibung: " & Err.Description _
    , vbCritical, "Fehler"
End Sub
Top
#2
Hallo Sebastian,

'kopieren und einfügen
'Quelle.UsedRange.Copy Ziel.Cells(1, 1)
Quelle.Copy Before:=ThisWorkbook.Sheets(1)

Gruß Uwe
Top
#3
Hallo Uwe,

Vielen Dank für deine schnelle Antwort!
Das Makro funktioniert jetzt einwandfrei :)

Kann man vielleicht noch zwei Schönheitskorrekturen einbauen?:

1. Vorher überprüfen, ob das Tabellenblatt "Test" schon vorhanden ist, und wenn ja, dann löschen.
2. Das importierte Tabellenblatt ans Ende der Mappe, anstatt an den Anfang setzen

Geht das? Notfalls schaffe ich das aber auch manuell

Grüße
Sebastian
Top
#4
Hallo Sebastian,

teste mal damit:

Sub Import_mit_Dialog()
Dim Quelle As Object, Ziel As Object
Dim strDatei As String

On Error GoTo Fehler

'Dialog "Datei öffnen" anzeigen
strDatei = Application.GetOpenFilename("Excel-Dateien(*.xlsx),*xlsx")

'Abbrechen falls keine Datei ausgewählt
If CVar(strDatei) = False Then
 MsgBox "Keine Datei ausgewählt", , "Abbruch"
 Exit Sub
End If

'MsgBox "Ausgewählte Datei: " & strDatei, , ""

'Ausgewählte Datei öffnen
Set Quelle = Workbooks.Open(Filename:=strDatei).Worksheets(1)

'Prüfung, ob Zielblatt schon existiert
On Error Resume Next
Set Ziel = ThisWorkbook.Worksheets(Quelle.Name)
On Error GoTo Fehler

'Gibt es schon ein Zielblatt gleichen Namens, wird es ohne Rückfrage gelöscht
If Not Ziel Is Nothing Then
 Application.DisplayAlerts = False
 Ziel.Delete
 Set Ziel = Nothing
 Application.DisplayAlerts = True
End If

'kopieren und einfügen
Quelle.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

Quelle.Parent.Close False

'Speicher freigeben
Set Quelle = Nothing

Exit Sub

Fehler:
Set Quelle = Nothing
Set Ziel = Nothing

   MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
   & "Beschreibung: " & Err.Description _
   , vbCritical, "Fehler"
End Sub

Gruß Uwe
Top
#5
funktioniert perfekt, vielen Dank :100:
Top
#6
genau sowas suche ich aber ich will das die datei geöffnent wird die ich in einem anderem textfeld erzeugt haben.
geht das auch???
Top
#7
(08.03.2017, 14:31)cloud21m schrieb: genau sowas suche ich aber ich will das die datei geöffnent wird die ich in einem anderem textfeld erzeugt haben.
geht das auch???

'Dialog "Datei öffnen" anzeigen
'strDatei = Application.GetOpenFilename("Excel-Dateien(*.xlsx),*xlsx")

'ohne Dialog
strDatei = TextBox1

Gruß Uwe
Top


Gehe zu:


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