Clever-Excel-Forum

Normale Version: Inhalt einer anderen Arbeitsmappe übernehmen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hello

Ich würde gerne den Inhalt einer Tabelle von einer Datei (Tabelle1, Zellinhalt A5:AP1000) in eine zweite Datei (Tabelle 5, in die Zelle ab B9) per Makro kopieren.

Hierzu bräuchte ich ein Makro, welches nicht den Pfad der Dateien, sondern lediglich den Namen der Dateien verwendet.

Hat jemand von euch eine Idee?

Vielen Dank

19
Hallo,

mit

Code:
DateiName = Dir(Kompletter Pfad mit Dateiname) erhältst Du den Dateinamen pur.

Gruß Uwe
Hallo Uwe, 

leider hilft mir das nicht weiter. Vielleicht habe ich mich auch falsch ausgedrückt.

Ich habe zwei Dateien. Die Datei 1 hat nur eine Tabelle (Sheet1). Die Datei 2 hat mehrere Tabellen. In der Datei 2 befindet sich eine Tabelle, nennen wir diese mal Tabelle 5. In dieser Tabelle 5 soll ab der Zelle B9 der Inhalt der Tabelle Sheet1 aus der Datei 1 (ab Zelle A5 bis Spalte AP100) eingefügt werden. Da der Pfad der Datei 1 nicht immer derselbe ist, bräuchte ich ein Makro, welches entweder den Dateinamen (immer gleich) beinhaltet oder ein Makro, durch dieses man die Datei 1 auswählen kann und der Inhalt anschließend eingefügt wird. Auch muss das Makro aus der Datei 2 aus geöffnet werden.

Ich hoffe, dies ist etwas verständlicher ausgedrückt. 
Da ich ein Neuling bin, was Makros betrifft, bin ich doch noch auf Hilfe angewiesen.

Vielen Dank
Hallöchen,

wenn DU bei uns nach Datei öffnen Dialog suchst, erhältst Du einige Treffer mit Beiträgen, die Dir weiterhelfen können.... z.B.

VBA-Datei-oeffnen-bestimmte-Zellen-kopieren-und-in-Ausgangsdatei-einfuegen
Hallo

mit diesem kleinen Programm sollte es problemlos gehen.  Bitte mal testen ...

mfg Gast 123

Code:
Sub Datei_Öffnen_und_kopieren()
Dim varFolder As Object, objShell As Object
    'Datei Öffnen über xlDialog Auswahl
    Set objShell = CreateObject("Shell.Application")
    Set varFolder = objShell.BrowseForFolder(0, "Folder", &H4000, "D:")
    If varFolder Is Nothing Then Exit Sub

    On Error GoTo Fehler   'Datei Öffnen
    Workbooks.Open Filename:=varFolder.self.Path
   
'Quelle Tabelle1, Zellinhalt A5:AP1000
'Ziel   Tabelle 5, in die Zelle ab B9
With ThisWorkbook.Worksheets("Tabelle1")
     .Range("A5:AP1000").Copy _
     ActiveWorkbook.Worksheets("Tabelle5").Range("B9")
     ActiveWorkbook.Save      'Speichern
     ActiveWorkbook.Close     'Schliessen
End With
Exit Sub

Fehler:  MsgBox "unerwarteter Fehler" & vbLf & Error()
End Sub
Hallo

erstmal Vielen Dank. 

Wenn ich es richtig verstehe und auch einarbeite, dann bilde und starte ich das Programm aus der Datei 1 mit der Tabelle1. Ich wähle dann das Makro an und er fügt die Inhalte in der Tabelle 5 der Datei 2 ein. 
Das ist schon einmal das, nach was ich suche. 

Allerdings sollte das Programm aus der Datei 2 aus gestartet und die Datei 1 ausgewählt werden. 

Wie müsste ich den Code anpassen? 

Bis dahin schonmal vielen Dank
Verwende

Code:
with Application.filedialog(1)
   if .show then
     with getobject(.selecteditems(1)).sheets(1).usedrange
       thisworkbook.sheets(1).cells(rows.count,1).end(xlup).offset(1).resize(.rows.count,.columns.count)=.value
       .Parent.parent.close 0
     end with
   end if
end with
Hallo Mika,

Code:
Sub HoleDaten()
  On Error Resume Next
  Application.ScreenUpdating = False
  With Workbooks.Open(Application.GetOpenFilename("Excel-Dateien (*.xls*),*.xls*", , "Auswahl der Quelldatei", , False), , True)
    .Worksheets("Tabelle1").Range("A5:AP1000").Copy ThisWorkbook.Worksheets("Tabelle5").Range("B9")
    Application.CutCopyMode = False
    .Close
  End With
  Application.ScreenUpdating = True
  On Error GoTo 0
End Sub

Gruß Uwe
Wow  19

Vielen Dank Uwe 
und allen anderen. 

Es funktioniert perfekt