Hallo Freunde,
ich bin gerade an einem Projekt dran.
Ich möchte gerne in eine vorhandene Excel Datei eine Tabellenblatt aus einer zweiten Excel Datei kopieren.
Soweit hab ich es hinbekommen, nur komme ich nicht weiter bei der definition des Blattnamens, aus der datei die kopiert werden soll. Diese kann immer unterschiedlich sein, und auch an einer verschiedener Reihenfolge, sprich nicht immer an 5 Stelle sondern mal an 7 oder nur 4 stelle der Tabellenreihenfolge.
Ich habe mir überlegt in meiner datei wo ich die Daten importieren möchte vorher in einer Zelle den Blattname hineinschreibe als Text.
Excel soll dann diesen namen nehmen und bei der zu öffnenden datei das Blatt suchen und kopieren.
Option Explicit
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 Ziel = ThisWorkbook.Worksheets(2)
Set Quelle = ActiveWorkbook.Worksheets(5) '<-- gewähltes Blatt wird definiert als Quelle, alles andere wie gehabt
'kopieren und einfügen
Quelle.UsedRange.Copy
Ziel.Cells(1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.Close
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
Application.DisplayAlerts = False
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub
Hab versucht folgendes zu ersetzten
Set Ziel = ThisWorkbook.Worksheets(3)
blatt = Ziel.Range("B10").Value
Set Quelle = ActiveWorkbook.Worksheets(blatt)
Doch er Zeigt mir immer Laufzeitfehler an! Obwohl in Zelle B10 der Blattanme aus der zu kopierden Datei steht.
hat jemand einen rat?
Desweiteren würde ich gerne Wissen, ob es möglich ist die zu kopierende Datei im Hintergrund zu öffnen und dann wieder zu schließe ohne zu speichern? Aktuell öffnet sich die zu kopierende Datei. Ich schließe sie dann wieder und Excel fragt mich ob ich die datei als Kopie sichern möchte. Danach kommt noch eine Meldung das sich noch daten im zwischenspeicher befinden und ob man diese auch sichern möchte. Dies ganze möchte ich gerne vermeiden. Am liebsten wäre es mir so:
Ich drücke auf meine Schaltfläche, wähle die Excel datei aus und das wars! Es wird im Vordergrund nichts geöffnet und auch nichts als Kopie gesichert. Es erscheint auch keine Meldung von wegen Zwischenspeicher bla bla bla. Ich könnte mir vorstellen das anch den import eine Meldung erscheint wie " Import abgeschlossen"
Danke!!
|