Datum aus Zelle beziehen u. in einen Pfad einfügen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Datum aus Zelle beziehen u. in einen Pfad einfügen
von: Pan
Geschrieben am: 22.05.2015 23:14:57

Hallo zusammen,
habe es hier leider erfolglos probiert.
https://www.herber.de/forum/archiv/1424to1428/t1426982.htm#1426982
Darum versuche ich es nun mit einer Beispieldatei.
https://www.herber.de/bbs/user/97792.xlsx
Ich möchte gerne das die Funktionen die in allen Zellen von Montag-Sonntag vorhanden sind, sich das entsprechende Datum aus der jeweiligen Spaltenüberschrift beziehen (so dass ich es nicht für jede Zelle manuell eintragen muss).
Zur Info. Die Funktionen verweisen auf andere Dateien in denen bestimmte Zellen summiert werden sollen (aber das seht ihr wahrscheinlich selber).
Bin wie immer dankbar für die Hilfe.
Gruss, Pan

Bild

Betrifft: Wo ist Rudi?
von: Michael
Geschrieben am: 23.05.2015 18:55:51
Hallo Pan,
im Prinzip habe ich zwei Lösungsansätze (gefunden), nämlich:
http://www.excel-ticker.de/excel-bezuge-zu-externen-dateien-dynamisch-aufbauen/
und
https://www.herber.de/forum/archiv/1212to1216/t1213837.htm
Die Formeln im ersten Fall sind ganz nett, funktionieren aber nur, wenn die jeweilige Datei *geöffnet* ist.
Der zweite Fall ist eine VBA-Lösung von Rudi M.
Ich habe mir gedacht, wie wäre es mit einer UDF, die die Sachen aus der anderen Datei holt?
Also habe ich Rudis Beispiel abgespeckt, so daß es so aussieht:

Option Explicit
Public Function holen(strPath As String, strFile As String, _
       strBlatt As String, strData As String, selector As Integer) As Variant
  
  Dim strFormel As String, strTest
  strFormel = "'" & strPath & "[" & strFile & "]" & strBlatt & "'!" & strData
  If selector = 1 Then
    holen = ExecuteExcel4Macro(strFormel)
   Else
    holen = strFormel
  End If
End Function
Sub holen_aufrufen()
 MsgBox holen(ThisWorkbook.Path & "\", Range("B3").Value, "Frühstück", "R6C7", 2)
 MsgBox holen(ThisWorkbook.Path & "\", Range("B3").Value, "Frühstück", "R6C7", 1)
End Sub
Public Function pfad() As String
 pfad = ThisWorkbook.Path & "\"
End Function
Die function pfad ist zum Bestimmen des Pfades im Dateinamen, die habe ich nur eingefügt, um mir Formelfummelei zu ersparen, die Beispieldatei aber so allgemein wie möglich zu halten.
Den "Selector" in "holen" habe ich angebracht, weil es nicht so tut, wie es soll, und ich den Fehler nicht finde: wenn = 1, wird ex4m aufgerufen, ansonsten werden einfach die zusammengesetzten Parameter ausgegeben.
Die Funktion funzt super, wenn man sie mit holen_aufrufen aufruft, aber im Tabellenblatt leider nur mit selector=2.
Ich bin leicht vernagelt! Weil ich aus dem Haus muß, lade ich ausnahmsweise eine nicht funktionsfähige Sache hoch, die zumindest als Denkanstoß tun sollte: https://www.herber.de/bbs/user/97799.xlsm
In der hochgeladenen Datei habe ich in B3 die Formel angebracht, die den Dateinamen erzeugt:
=JAHR(B5)&"_"&TEXT(MONAT(B5);"00")&"_"&TEXT(TAG(B5);"00")&", "&B6&".xlsm"
In B16 und B17 rufe ich "holen" auf, einmal mit Selector=1 und einmal mit =2. Der Zellbezug steht in RC-Schreibweise (so war es bei Rudis Beispiel), wobei r6c7 die Zelle G6 anspricht, wo ich in einer schnell erzeugten Datei eine 5 eingegeben habe.
"Montagsdatei": https://www.herber.de/bbs/user/97798.xlsm
Die Datei heißt im Original "2015_06_01, Montag.xlsm" und sollte zum Testen nach dem Runterladen auf diesen Namen umbenannt (und ins gleiche Verzeichnis gesteckt) werden.
Abgesehen davon wird immer ganz anders bei Dateinamen mit "," und Leerzeichen, aber gut, es funzt ja, wenn man holen von einer sub aus aufruft. (siehste, sogar Herrn Herbers upload-Funktion zickt mit Leerzeichen)
So, ich bin gespannt, wie die Geschichte ausgeht.
Schöne Grüße,
Michael
P.S.: Du sprichst sowieso immer nur eine Zelle an (z.B. J14), also kannst Du Dir die Summe sparen.
Ob die UDF-Lösung insgesamt sinnvoll ist? Ich bin etwas unsicher - die Dinger werden bei jeder Änderung irgendeiner Zelle der Reihe nach aufgerufen.
Vielleicht ist eine reine VBA-Lösung im Stil von Rudis Vorschlag besser, die auf "Knopfdruck" alle Werte aktualisiert und als Werte in die Zellen schreibt.
Insgesamt würde ich vielleicht die Konzeption von dat janze überdenken und mir mal ernsthaft die Theorie von Datenbanken ansehen...

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datum aus Zelle beziehen u. in einen Pfad einfügen"