Microsoft Excel

Herbers Excel/VBA-Archiv

Verknüpfungen

Betrifft: Verknüpfungen von: johnde
Geschrieben am: 14.09.2004 14:11:41

Hi Leute, ich habe folgendes Problem ich muß jeden Tag eine Excel Tabelle erstellen die dann unter U:\.......\Kal_(Aktuelles Datum).xls abgelegt wird.
Nun muß ich dazu eine neue Übersichtseite erstellen die einige Daten aus diesen Tabellen enthalten. Nun möchte ich das, wenn ich ein Datum in eine Zelle eingebe, die dazugehörigen Daten aus dieser Datei in mein aktuelles Blatt eingelesen werden. ZB. 14.09.04 muß aus der Datei U:\.....\Kal_14.09.04.xls die Zelle A1 einlesen.
Ich hoffe jemand kann mir dabei helfen.

  


Betrifft: AW: Verknüpfungen von: Axel
Geschrieben am: 14.09.2004 15:24:57

Hallo,

das lässt sich z.B. über die Indirekt()-Tabellenfunktion lösen.

Beispiel:

In A1 trägst du das Datum ein. Wichtig: Als Zellformat muß "TEXT" gewählt werden, da sonst beim Zugriff auf diese Zelle eine Konvertierung in das interne Excel-Format (eine simple Zahl) stattfindet.

In B1 wird ein String zusammengestellt, der die Verknüpfungsadresse enthält, nämlich ="'[Kal_"&A1&".xls]Tabelle1'!A1"

In C1 kann dann der Wert der verknüpften Zelle über folgende Formel abgelegt werden: Indirekt(B1)

Achtung: Dies ist keine wirkliche Verknüpfung. Das Ergebnis ist zwar korrekt, erwartet wird aber eine geöffnete Quelldatei.

Per VBA liesse sich natürlich eine richtige Verknüpfungsformel erstellen. Aber möglicherweise reicht dir der Ansatz.

Gruß
Axel


  


Betrifft: AW: Verknüpfungen von: johnde
Geschrieben am: 14.09.2004 18:27:58

Hi Axel, danke erstmal für die prompte Antwort. Leider reicht mir das aber nicht denn die Qelldateien sind nicht geöffnet. Es handelt sich bei den Quelldateien um Tagesrapporte, die Zieldatei soll nur die Summen aus den Quelldateien enthalten, und dies sind wie gesagt schon abgelegt. Per VBA wäre es natürlich super, doch weiß ich nicht wie ich das anfangen soll. Könntest Du mir da bitte beistehen?

Gruß Hans


  


Betrifft: AW: Verknüpfungen von: Axel
Geschrieben am: 15.09.2004 09:55:27

Hallo,

kopiere unten stehenden Code in ein Standard-Modul der Entwicklungsumgebung. Und zwar in die Mappe, in der die Verknüpfungen generiert werden sollen.

Die Konstanten ggf. deinen Bedürfnissen anpassen. Über "Extras | Makro" das Makro mit dem Namen "CreateLink" auswählen und über den Button "Optionen" einen ShortCut zuweisen, z.B. Strg-m.

Die Zelle mit dem Datum auswählen. Der Zellwert kann jetzt auch wieder normal als Datumswert formatiert sein. Das Makro dann über den ShortCut starten. In der rechten Nachbarzelle wird dann die Formel für die Verknüpfung erstellt.

Falls es nicht die Nachbarzelle sein soll, sind die Parameter im Makro bei der Offset-Eigenschaft zu ändern. Der erste Parameter bezeichnet den Offset in Zeilen, der zweite in Spalten. Es sind auch negative Werte möglich.

Wenn die Pfadangabe stimmt, funktioniert das Makro sowohl bei geöffneter wie geschlossener Quellmappe einwandfrei.

Gruß
Axel



Public Sub CreateLink()
   
   Const C_Path = "C:\tmp\"           ' Verzeichnis für Quelldatei
   Const C_Prefix = "Kal_"            ' Prefix Name der Quelldatei
   Const C_SourceSheet = "Tabelle1"   ' Quell-Tabellenblatt
   Const C_SourceRange = "A1"         ' Quell-Bezug
   
   ActiveCell.Offset(0, 1) = "='" & C_Path & "[" & C_Prefix & _
      ActiveCell.Value & ".xls]" & C_SourceSheet & "'!" & C_SourceRange
   
End Sub


     Code eingefügt mit Syntaxhighlighter 2.5



  


Betrifft: AW: Verknüpfungen von: johnde
Geschrieben am: 15.09.2004 11:39:11

Hallo Axel
Danke funzt soweit einmal ganz super, das ist genau was ich gesucht habe. Ich habe nur noch ein kleines Problem. Und zwar ist der Pfad keine Konstante. Mein Pfad sieht in etwa so aus U:\Kalander\Schicht\(aktuelles Monat)\datei.xls
Jetzt habe ich einmal aus dem Datum das Monat in eine eigene Zelle gelegt, nur wie kann ich das nun in Deinen Code einfügen so das er mir den gesamten Pfad nimmt. Also U:\Kalander\Schicht\ ist immer konstant(bis hierher hab ichs kapiert) nur das Monat ändert sich. Bitte nochmals um Hilfe.
Danke Hans


  


Betrifft: AW: Verknüpfungen von: Axel
Geschrieben am: 15.09.2004 12:03:14

Hallo Hans,

eine separate Zelle für den Monat ist nicht notwendig. VBA kann den Monat natürlich auch selbst ermitteln ;-))

Im folgenden wird davon ausgegangen, dass der Verzeichnisname für den Monat als zweistellige Zahl vorliegt. Falls einstellig, die Format-Anweisung von "mm" auf "m" ändern. Falls in Kurznotation (Jan, Feb, ...) auf "mmm" und bei Langformat (Januar, Februar, ...) auf "mmmm".

Gruß
Axel




Public Sub CreateLink()
   
   Const C_Path = "U:\Kalender\Schicht\"           ' Verzeichnis für Quelldatei
   Const C_Prefix = "Kal_"            ' Prefix Name der Quelldatei
   Const C_SourceSheet = "Tabelle1"   ' Quell-Tabellenblatt
   Const C_SourceRange = "A1"         ' Quell-Bezug
   
   ActiveCell.Offset(0, 1) = "='" & C_Path & _
      Format(Date, "mm") & "\[" & C_Prefix & _
      ActiveCell.Value & ".xls]" & C_SourceSheet & "'!" & C_SourceRange
   
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5



  


Betrifft: AW: Verknüpfungen von: johnde
Geschrieben am: 15.09.2004 12:39:43

Hi Axel
Danke nochmal das war eine sehr gute Idee von Dir. Ich probiere schon seit 2 Tagen herum. So funzt alles richtig.
Gruß Hans