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.

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

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

Gruß Uwe
Antworten 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
Antworten 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
Antworten Top
#5
funktioniert perfekt, vielen Dank :100:
Antworten 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???
Antworten Top
#7
(08.03.2017, 13: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
Antworten Top


Gehe zu:


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