Excel Werte in anderes Excel exportieren

Sebastian Thalhammer

Erfahrenes Mitglied
Hi zusammen!

Ich bin sicher diese Frage ist in dem Kontext schon einmal gestellt worden, dennoch finde ich nichts passendes für mich und in VBA finde ich mich zwar zurecht allerdings fehlen mir noch einige Facts.

Folgende Aufgabenstellung:

Ich habe eine Kalkulation in der ich Endpreise, Angebotsnummer, Kunde, usw. habe.
Diese Schlüsselinformationen will ich in eine andere Excel Tabelle übertragen und mir somit eine Übersicht über die gestellten Preise und Kunden usw. geben.

Folgende Probleme tauchen aber dabei auf:

Ich möchte nur ein einziges Mal die Werte in die Übersichtstabelle exportieren können
Danach sollen in der Übersicht entsprechende Verlinkungen zu den Ursprungstabellen vorhanden sein, die sich dann selbständig aktualisieren

Hat jemand schon ähnliche Makros verfasst und würde mir diese bereitstellen bzw. auch erklären wie und wo ich diese einsetzen muss?

Grüße
Sebastian
 
Moin,

wenn ich Dich richtig verstehe, brauchst Du nur Verweise auf die zweite Tabelle zu erstellen!

Nehmen wir an Du hast die Tabellen Test1.xls und Test2.xls.
Nun möchtest Du in Test2 in einer beliebigen Zelle den Wert von "Test1::Zelle A100" einfügen.
Öffne beide Tabellen und klicke auf die gewünschte Zelle in Test2 (bspw. X5).
Gib' ein '+' ein und wechsle über das Fenster-Menü in die Tabelle Test1. Hier klickst Du nun auf die Zelle A100 (bspw. im Folder "Reiter_A") und bestätigst mit <ENTER>.
In Test2::X5 sollte jetzt dieser Verweise stehen: =+[Test1.xls]Reiter_A!$A$100

Dies wiederholst Du nun für alle gewünschten Verweise (oder pflegst sie direkt über die Tastatur ein) !

Hoffe, dass hilft Dir weiter!
Gruß
Klaus
 
Das wäre der Ablauf soweit, richtig!

Eigentlich könnte man das so auch machen, richtig. Dann brauche ich nicht elendslangen Code schreiben nur um dasselbe zu erreichen. Total ausprogrammiert wäre es natürlich benutzerfreundlicher aber zu welchem Preis?
Ich werds mal so versuchen und dann kann ich mir ja noch immer was überlegen.

Danke erstmal
Grüße
Sebastian
 
Moin,

Eigentlich könnte man das so auch machen, richtig. Dann brauche ich nicht elendslangen Code schreiben nur um dasselbe zu erreichen. Total ausprogrammiert wäre es natürlich benutzerfreundlicher aber zu welchem Preis?

das hängt ja auch von div. Gegebenheiten ab, bspw. ob die Zellen in beiden Sheets immer der gleichen Stelle stehen etc.

Eventuell kannst Du ja noch versuchen, die zu übertragenden Zellen zu kopieren (so sie denn zusammenhängend sind).
In der neuen Tabelle geht Du dann an der gewünschten Stelle ins Kontextmenü "Inhalte einfügen", wählst dort aus, was eingefügt werden soll (Wert, Formel etc.) und sagst dann nicht <ok>, sondern <verknüpfen> (!)
Das klappt dann auch (allerdings ohne die $'s zum fixieren der Ausgangszelle)

Gruß
Klaus
 
Hallo Sebastian,

habe hier mal was gebastelt was dir vielleicht helfen könnte:

Visual Basic:
Private Sub Workbook_Open()

zeile = 1

With Application.FileSearch
    .NewSearch
    .LookIn = ActiveWorkbook.Path & "\Angebote"
    .Filename = "*.xls"
    .SearchSubFolders = False
    .Execute
    For iFile = 1 To .FoundFiles.Count
        Cells(zeile, 1) = "=+'" & ActiveWorkbook.Path & "\Angebote\[" & Mid(.FoundFiles(iFile), InStrRev(.FoundFiles(iFile), "\", -1) + 1) & "]Tabelle1'!A1"
        Cells(zeile, 2) = "=+'" & ActiveWorkbook.Path & "\Angebote\[" & Mid(.FoundFiles(iFile), InStrRev(.FoundFiles(iFile), "\", -1) + 1) & "]Tabelle1'!B1"
        Cells(zeile, 3) = "=+'" & ActiveWorkbook.Path & "\Angebote\[" & Mid(.FoundFiles(iFile), InStrRev(.FoundFiles(iFile), "\", -1) + 1) & "]Tabelle1'!C1"
        Cells(zeile, 4) = .FoundFiles(iFile)
        zeile = zeile + 1
    Next iFile
End With

End Sub

Ich habe eine Excel Datei mit diesem Makro welches beim Öffnen ausgeführt wird. Das Makro durchsucht dann den Unterordner "Angebote" nach weiteren Excel dateien und trägt die Inhalte der Tabelle1, Zelle A1, B1, C1 sowie den Namen und den Pfad der jeweiligen Datei untereinander ein.

Es müssten jetzt halt die Zellen und eventuell die Namen der Tabellen angepasst werden, aber von Prinzip solte es für dein Vorhaben geeignet sein

Gruß Thomas
 
Hi Tombe!

Erstmal ganz großes Danke für dein Makro. Das ist eigentlich genau so etwas wonach ich gesucht habe.

Ich habs jetzt ein bisschen modifiziert mit den Bezügen, Blattnamen, Pfad und Unterordner durchsuchen.

Da hab ich jetzt allerdings auch schon das Problem. Wie ändere ich die Stringabfrage ab, damit er auch den Pfad zu den entsprechenden Unterordnern findet?

Ansonsten t es schon sehr gut
 
Zuletzt bearbeitet:
Verstehe jetzt nicht so ganz was du meinst mit "Wie ändere ich die Stringabfrage ab, damit er auch den Pfad zu den entsprechenden Unterordnern findet?".

Im Beispiel von mir gab es ja das "Stammverzeichnis" in der die Excel Datei mit dem Makro steht und dann gibt es darunter noch das Unterverzeichnis "Angebote" wo die Excel Dateien drinstehen die durchsucht werden sollen.

Gibt es bei dir noch weitere Verzeichnise oder liegen die Dateien irgendwie verteilt in verschiedenen Ordnern
 
ja genau. In dem Ordner Angebote befinden sich noch tlw. noch einmal Unterordner (und sogar da Unterordner).

sieht also bei mir so aus:
Angebote\Kalkulation.xls
Angebote\Kunde A\Kalkulation.xls
Angebote\Kunde A\Irgendwas\Kalkulation.xls

Ich bräuchte also eine Abfrage wo ich den Pfad bis zurück zum Stammpfad auslesen kann oder so ähnlich.
 
Ok, dann müsste es so gehen:

Visual Basic:
Private Sub Workbook_Open()

zeile = 1

With Application.FileSearch
    .NewSearch
    .LookIn = ActiveWorkbook.Path & "\Angebote"
    .Filename = "*.xls"
    .SearchSubFolders = True
    .Execute
    
    For iFile = 1 To .FoundFiles.Count
        dateiname = dir(.FoundFiles(iFile))
        dateipfad = Replace(.FoundFiles(iFile), dateiname, "")

        Cells(zeile, 1) = "=+'" & dateipfad & "[" & dateiname & "]Tabelle1'!A1"
        Cells(zeile, 2) = "=+'" & dateipfad & "[" & dateiname & "]Tabelle1'!B1"
        Cells(zeile, 3) = "=+'" & dateipfad & "[" & dateiname & "]Tabelle1'!C1"
        Cells(zeile, 4) = .FoundFiles(iFile)
        zeile = zeile + 1
    Next iFile
End With

End Sub

Durchsucht jetzt auch die Unterverzeichnise und es sieht auch dazu noch etwas übersichtlicher aus.

Gruß Thomas
 

Neue Beiträge

Zurück