shadow-tsw
Goto Top

Excel 2010: Komplexe Verknüpfung verschiedener Excel-Dateien in unterschiedlichen Pfaden mit Aktualisierung zugehöriger Komponenten

Hallo ihr Lieben,

da Ihr mir beim letzten mal so toll geholfen habt, ersuche ich erneut um kreative Vorschläge und Hilfestellungen. Für ein Projekt mit Kalkulationselementen arbeite ich mit verschiedenen Exel Dateien, welche wiederum miteinander verknüpft sind. Ich möchte euch die Situation von Anfang an schildern und hoffe, dass ich das mit Unterstüzung realisiert bekomme.

Folgende Situation ist gegeben:

Eine Master-Datei beinhaltet Nummer, Bezeichnung, Verpackung (siehe Bild). Da diese Datei und die Information, die ich brauche, auf anderen Dateien aufbaut, sollte hier der VBA-Code enthalten sein, die alle aufbauenden Dateien öffnet, aktualisiert und abspeichert. Diese Datei liegt auf Pfad T:\Kalkulation-Verkaufspreis\Master.xls

ad2982902ce458aa5e5a6a43b3392061

Datei Master baut wie folgt auf:

e962e4424c51d76d192cb695d944f087

Teilziel 1:
Ein Makro in der Datei Master, welches die Dateien in folgender Reihenfolge (im Hintergrund ?) aktualisiert und abspeichert.
1.Herstellung 2.Verpacken
Mit dem Makrorecorder ging es zwar, wenn auch etwas umständlich, aber dadurch wird Teilziel 2 eingeschränkt

Teilziel 2:
Da die Herstellung (jetzt mal rein hypothetisch) eines roten Ballons anders ist, als die eines gelben, gibt es unterschiedliche Excel Dateien mit unterschiedlichen Dateinamen. Als Dateinamen wurden die Artikelnummern verwendet.
Er soll die Preise aus der zugehörigen Datei entnehmen. Ich hatte das bei was anderem über eine Formel probiert ( =["B2".xls]Kalkulation!$J$8) aber das funktionierte nicht.
Erschwerend hinzu, dass verschiedenartiges Verpacken unterschiedliche Endkosten zur Folge hat. Hierzu wurden Ordner erstellt:

a496316d57fb42b7cebfc50374cd65c5
Pfad
T:\Kalkulation-Verkausfpreis\Verpacken\

In dem jeweiligen Ordner findet sich eine Excel wieder, die der Artikelnummer des eigentlichen Produktes entpricht:

c9742a6ed5efad2d6e7b66f3dac492e7

Was möchte ich jetzt als Teilziel Nr. 2 ? Meine Master Datei soll dort, wo eine "Menge" eingetragen ist, sich den Preis zu der zugehörigen Verpackung (Spalte 3, Ordername) und der zugehörigen Datei (Spalte 1, Excel-Datei, fixer Zellenbezug) heraussuchen. Weil das alles sehr kompliziert klingt, habe ich versucht ein Ablauf-Schema zu erstellen:

95bf80fc7d61c4eb68127d4b58d89357

6b327e078ba1f31a268c4a2b1e750a0c

Soviel dazu.....

Dann noch eine Kleinigkeit, die beim Aktualisierungsvorgang berücksichtigt werden muss. Die jeweilige Datei im Ordner Verpacken, z.B. ...\Verpacken\Karton\100.xls muss sich die Herstellkosten aus einer gleichnamigen Datei von einem anderen Pfad ziehen z.B. ...\Herstellen\25\100.xls
dazu habe ich auch wieder ein kleines Schema erstellt, was dem vorherigen entspricht, nur das diese Vorgänge vorher bzw zeitgleich ablaufen:

bf770ef7d39980829c921aa6cc542186

9e9762e829c91e8e64a439ef42c6758d


Alle die jetzt denken, "du hast Sie nicht mehr alle !!" oder ähnliches oder vielleicht sagen "für 20€ gibt`s ne Software die genau das macht".......kann sein, aber ich möchte etwas machen, habe ein Problem und suche Hilfe, deswegen wende ich mich an Top Qualifizierte ^^
Für mich der schwierigste Gedankengang Excel dazu zu bekommen, einen Ordner zu öffnen, dessen Name in einer Zelle steht. Dasselbe gilt für einen Zellen-Bezug von Datei A nach Datei B, wo der Name von Datei B in Zelle xyz von A steht (verkompliziert :D )

Viele Liebe Grüße und schonmal vorab für jede erdenkliche Hilfe !!

shadow-tsw

Content-Key: 270020

Url: https://administrator.de/contentid/270020

Printed on: April 24, 2024 at 03:04 o'clock

Member: Snowman25
Snowman25 Apr 23, 2015 at 11:55:35 (UTC)
Goto Top
Hallo @shadow-tsw,

Was du brauchst ist eine Datenbank, aus der deine Preise kommen.
Microsoft hat genau vor solche Anwendungsfälle MS Access entwickelt. Sollte das bereits in deinem Office-Paket enthalten sein, solltest du das nachinstallieren und die Daten aus der Access-Datenbank importieren.

Gruß,
@Snowman25
Member: shadow-tsw
shadow-tsw Apr 23, 2015 at 12:28:58 (UTC)
Goto Top
Aber die Preise sind ja nicht statisch, müssen gezielt kalkuliert werden und sind von mehreren Faktoren abhängig... und das geht auch mit Access ?
Ich hoffe, ich wurde da nicht Missverstanden, die Preise die oben aufgezeigt sind, enstehen durch eine komplexe Kalkulation. Um einen finalen Preis zu erzielen, muss ich eine Herstellung kalkulieren, diesen Preis nehmen und in einer neuen Kalkulation weiterverarbeiten bis ich dann den Preis für mein Zielprodukt erhalte. Die Faktoren bei dieser Kalkulation sind sehr unterschiedlich, aber ich habe dort schon korrekte Bezüge hergestellt. Was mir jetzt halt eben noch fehlt, ist das automatische Öffnen, Aktualisieren und wieder Speichern dieser Kalkulationsdokumente, damit ich nicht wie wild auf der Platte rumsuchen muss, um es händerisch zu erledigen ^^

Was mir auch fehlt ist ein Bezug zu einer anderen Excel-Datei, dessen Orderstruktur oder Dateiname in einer Zelle steht, zB.

öffne T:\Kalkulation-Verkaufspreis\"Ordnername Zelle B23"\"Dateiname Zelle B45".xls
Mitglied: 114757
114757 Apr 23, 2015 at 21:49:44 (UTC)
Goto Top
Member: shadow-tsw
shadow-tsw Apr 24, 2015 at 08:45:31 (UTC)
Goto Top
Hallo jodel,

was der Frager dort wollte ist mir einigermaßen klar, aber wie kann ich das jetzt für meinen Zweck nutzen ? Ich weiß nicht, wie ich das unterbringen soll.

Ich habe das Problem vorzeitig erstmal anders gelößt, ich habe die Unterorder wieder aufgelößt und alle Dateien in einen Ordner gesteckt. Dateien des selben Produkts in anderer Verpackung habe ich mit einem Zusatz im Dateinamen versehen (aus obigem Beispiel 100+1.xls). Jetzt kann ich den Dateinamen in einer Zelle generieren lassen und habe somit den korrekten Pfad zur zugehörigen Datei, war etwas umständlich aber läuft bis jetzt.

Aber trotzdem bleibt mir ein Problem bestehen: Wie bringe ich Ihn dazu, z.B. im sverweis oder im Bezug anstatt 'X:\OrdnerXYZ\[DateiXYZ.xlsm]Tabelle1'!$B$8:$G$223 ihm zu sagen, dass der Dateiname in Zelle A2 steht. Dort steht der Dateiname im Textformat.

Es sollte dann so aussehen: 'X:\OrdnerXYZ\["A2.xlsm" oder nur "A2"]Tabelle1'!$B$8:$G$223

Trotzdem Danke für die Unterstützung

shadow-tsw
Mitglied: 114757
114757 Apr 24, 2015 updated at 08:53:56 (UTC)
Goto Top
Naja auch das kein Problem
Excel - Zellen aus anderen Exceldateien auslesen
Bitte alles ganz genau lesen, auch den Link von Colinardo !! sonst vergisst du wichtige Details
Member: shadow-tsw
shadow-tsw Apr 24, 2015 at 10:16:04 (UTC)
Goto Top
Hallo Jodel, vielen Dank...
aber ich hänge dort fest :D er hat in seinem Link noch eine funktion getvalue ? Das hat mich verwirrt, aber im Prinzip ist es das was ich haben möchte nur mit dem Unterschied, dass die Quell-Zelle fix ist, in dem Beispiel zieht die Zieldatei sich jeweils den Bezug aus Blatt xy -1, also eins links von, verstehe ich das richtig ?
Member: shadow-tsw
shadow-tsw Apr 24, 2015 at 12:23:48 (UTC)
Goto Top
Habs hinbekommen :D
Member: shadow-tsw
shadow-tsw Apr 29, 2015 at 12:54:24 (UTC)
Goto Top
Ich hab nun alles so zurecht gebastelt und es funktioniert wie gewollt....

d2d7de851ad17ae93f267799f9b29295

Module:

Mappen aktualisieren:

akalkuakt
Sub aktu()
Application.ScreenUpdating = False
Dim Mappe As String
Mappe = Range("J32")
Workbooks.Open Filename:=Mappe, UpdateLinks:=3
ActiveWorkbook.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub

gkalkuakt
Sub aktu()
Application.ScreenUpdating = False
Dim Mappe As String
Mappe = Range("I32")
Workbooks.Open Filename:=Mappe, UpdateLinks:=3
ActiveWorkbook.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub

Button zur Aktualisierung:
Sub nacheinander()
Call gkalkuakt.aktu
Call akalkuakt.aktu
End Sub

Wert AK:
Sub ak()
For Each cell In ActiveSheet.Range("P32")
cell.Value = getValue(Cells(32, 8))
Next
End Sub

Function getValue(rngName As Range) As Variant
strParam = "'T:\test\test2\[" & rngName.Value & "]Kalkulation'!R100C14"
getValue = ExecuteExcel4Macro(strParam)
End Function

Wert HK:
Sub hk()
For Each cell In ActiveSheet.Range("O32")
cell.Value = getValue(Cells(32, 7))
Next
End Sub

Function getValue(rngName As Range) As Variant
strParam = "'T:\test\test2\[" & rngName.Value & "]Kalkulation'!R100C14"
getValue = ExecuteExcel4Macro(strParam)
End Function


Was muss ich jetzt noch verändern, damit er das für jede zeile macht, in der in Spalte F eine Nummer steht (wenn nicht, dann nichts machen)...


P:S: wo kann man denn diese Quellcode-Dinger einfügen ?
Member: shadow-tsw
shadow-tsw Apr 29, 2015 at 12:59:52 (UTC)
Goto Top
Achso, damit keine Missverständnisse auftauchen, hier nochmal mit Bild ohne Ton:
1dca93903f4a8dc0e484245cef0432e5