Supportnet / Forum / Tabellenkalkulation
Pfad automatisch in andere Datei kopieren
Frage
Hallo,
ich habe derzeit fuer verschiedene Personen jeweils eine gleiche Excel-Datei angelegt, aus der ich eine Zusammenfassung in eine fuer alle Dateien gemeinsame Datei kopieren moechte.
Bsp.:
DateiA.xls fuer Person A
DateiB.xls fuer Person B
usw.
Zusammenfassung.xls fuer die wichtigsten Inhalte aus den einzelnen Dateien.
Ich suche eine Loesung, mit der ich per Knopfdruck in der jeweiligen Personendatei (also mit einem Makro) eine Zeile in die Datei Zusammenfassung.xls kopieren kann. Das soll aber so geschehen, dass in der Datei Zusammenfassung.xls nicht nur die Inhalte stehen, sondern ein Zellbezug erstellt wird.
Wenn ich also im Nachhinein den Inhalt einer Personendatei aendere, soll diese Aenderung automatisch und ohne weiteren Knopfdruck in die Zusammenfassung.xls uebernommen werden.
Bsp.:
In der Datei Zusammenfassung steht nicht nur Inhalt A, sondern
'[c:\pfad\DateiA.xls]Tabelle1'!B4
Fuer den Fall, dass diese Beschreibung nicht exakt genug war, bitte melden.
Vielen Dank fuer Eure Hilfe.
Phlip
Antwort 1 von Phlip
Wo sind die Excel-Profis. Kennt niemand eine Loesung fuer dieses Problem? Ich dachte, es waere ein eher leichtes Problem, bei dem ich nur nicht auf die Loesung komme...
Kennt Ihr alternativ noch weitere gute Excelforen im Netz?
Phlip
Kennt Ihr alternativ noch weitere gute Excelforen im Netz?
Phlip
Antwort 2 von Aliba
Hi Phlip,
hier brauchst Du die VB-Profis. Da hab ich zwar auch wenig Ahnung davon, aber ich habe mal ein Makro aufgezeichnet, das folgendes macht:
In PersonA.xls ist ein Bereich markiert. Wenn dann das Makro gestartet wird, wird die Datei Zusammenf.xls geöffnet , hier die Tabelle2 Zelle B4 ausgewählt und die kopierten Daten als Bezüge zur PersonA.xls eingefügt. Danach wird wieder in PersonA.xls gewechselt.
Die Problematik hierbei: die Angabe, wohin die Daten als Bezüge kopiert werden sollen müssten ja wahrscheinlich irgendwie variabel gestaltet werden, denn sonst benötigst Du ja für jede Mappe und jede Datenzeile ein extra Makro. Aber wie gesagt, dazu langen meine VB-Kenntnisse nicht aus, es sei denn, Du hast irgendeine Einfügelogik. Man könnte auch darüber nachdenken, ob das Makro vielleicht von Zusammenf.xls aus gestartet wird und dann irgendwo die Einfügedaten gesteuert werden.
Der Code für das Makro sieht nach dem Aufzeichen so aus:
Sub Makro1()
Selection.Copy
Workbooks.Open FileName:="C:\Eigene Dateien\Supportnet\Zusammenf.xls"
Sheets("Tabelle2").Select
Range("B4").Select
ActiveSheet.Paste Link:=True
Windows("personA.xls").Activate
Application.CutCopyMode = False
End Sub
CU Aliba
hier brauchst Du die VB-Profis. Da hab ich zwar auch wenig Ahnung davon, aber ich habe mal ein Makro aufgezeichnet, das folgendes macht:
In PersonA.xls ist ein Bereich markiert. Wenn dann das Makro gestartet wird, wird die Datei Zusammenf.xls geöffnet , hier die Tabelle2 Zelle B4 ausgewählt und die kopierten Daten als Bezüge zur PersonA.xls eingefügt. Danach wird wieder in PersonA.xls gewechselt.
Die Problematik hierbei: die Angabe, wohin die Daten als Bezüge kopiert werden sollen müssten ja wahrscheinlich irgendwie variabel gestaltet werden, denn sonst benötigst Du ja für jede Mappe und jede Datenzeile ein extra Makro. Aber wie gesagt, dazu langen meine VB-Kenntnisse nicht aus, es sei denn, Du hast irgendeine Einfügelogik. Man könnte auch darüber nachdenken, ob das Makro vielleicht von Zusammenf.xls aus gestartet wird und dann irgendwo die Einfügedaten gesteuert werden.
Der Code für das Makro sieht nach dem Aufzeichen so aus:
Sub Makro1()
Selection.Copy
Workbooks.Open FileName:="C:\Eigene Dateien\Supportnet\Zusammenf.xls"
Sheets("Tabelle2").Select
Range("B4").Select
ActiveSheet.Paste Link:=True
Windows("personA.xls").Activate
Application.CutCopyMode = False
End Sub
CU Aliba
Antwort 3 von Guenter
Hallo Phlip,
um den Inhalt einer Zelle in der DateiA in die Datei Zusammenfassung zu schreiben, kannst Du dieses Makro verwenden:
Um aber bei Änderungen in der DateiA immer einen Update in der Datei Zusammenfassung zu bekommen, würde ich ein Ereignismakro einsetzen:
Worksheet_Change Target Range Deine Zelle, die verändert wird.
Gruß
Günter
um den Inhalt einer Zelle in der DateiA in die Datei Zusammenfassung zu schreiben, kannst Du dieses Makro verwenden:
Option Explicit
Sub Makro1()
Dim A1Text
Range("A1").Select
A1Text = Cells(1, 1).Value
Workbooks.Open Filename:="C:\EXCEL\Zusammenfassung.xls"
Range("A5").Select
Cells(5, 1).Value = "c:\DateiA.xls" & " " & A1Text
Application.CutCopyMode = False
End Sub
Um aber bei Änderungen in der DateiA immer einen Update in der Datei Zusammenfassung zu bekommen, würde ich ein Ereignismakro einsetzen:
Worksheet_Change Target Range Deine Zelle, die verändert wird.
Gruß
Günter
Antwort 4 von Guenter
Ergänzung:
hier findest Du ein Makro für SelectionChange, das auch bei Worksheet_Change funktioniert:
https://supportnet.de/discussion/listmessages.asp?AutoID=142331
Gruß
Günter
hier findest Du ein Makro für SelectionChange, das auch bei Worksheet_Change funktioniert:
https://supportnet.de/discussion/listmessages.asp?AutoID=142331
Gruß
Günter
Antwort 5 von Phlip
@Aliba:
Danke fuer die Hilfe. Die entscheidenden Hinweise waren die Zeilen
Workbooks.Open ...
ActiveSheet.Paste Link:=True
@all:
Eine Frage habe ich aber noch. Ich moechte die geoeffnete Datei zusammenf.xls danach gerne wieder schlie$en. Also habe ich mal probiert
Workbooks.Close FileName:="Pfad"
Aber das hat leider nicht funktioniert.
Weisst Du oder jemand anderes vielleicht wie das geht?
Danke fuer die Hilfe. Die entscheidenden Hinweise waren die Zeilen
Workbooks.Open ...
ActiveSheet.Paste Link:=True
@all:
Eine Frage habe ich aber noch. Ich moechte die geoeffnete Datei zusammenf.xls danach gerne wieder schlie$en. Also habe ich mal probiert
Workbooks.Close FileName:="Pfad"
Aber das hat leider nicht funktioniert.
Weisst Du oder jemand anderes vielleicht wie das geht?
Antwort 6 von Phlip
@Guenther:
Ich hatte Alibas Antwort eine ganze Zeit lang geoeffnet, bevor ich geantwortet habe. Daher habe ich Deine Antwort erst jetzt gesehen. Dir natuerlich auch herzlichen Dank fuer die Hilfe.
Welchen Vorteil hat ein solches von Dir angesprochenes Ereignismakro? Werden nicht sowieso alle Links beim Oeffnen der Datei zusammenfassung.xls aktualisiert?
@all:
Weiterhin die Frage aus meinem letzten Post: Ich moechte die geoeffnete Datei zusammenf.xls danach gerne wieder schlie$en. Also habe ich mal probiert
Workbooks.Close FileName:="Pfad"
Aber das hat leider nicht funktioniert.
Weisst Du oder jemand anderes vielleicht wie das geht?
Ich hatte Alibas Antwort eine ganze Zeit lang geoeffnet, bevor ich geantwortet habe. Daher habe ich Deine Antwort erst jetzt gesehen. Dir natuerlich auch herzlichen Dank fuer die Hilfe.
Welchen Vorteil hat ein solches von Dir angesprochenes Ereignismakro? Werden nicht sowieso alle Links beim Oeffnen der Datei zusammenfassung.xls aktualisiert?
@all:
Weiterhin die Frage aus meinem letzten Post: Ich moechte die geoeffnete Datei zusammenf.xls danach gerne wieder schlie$en. Also habe ich mal probiert
Workbooks.Close FileName:="Pfad"
Aber das hat leider nicht funktioniert.
Weisst Du oder jemand anderes vielleicht wie das geht?
Antwort 7 von Guenter
Hallo,
im Prinzip ist das Ergebnis wohl identisch. Es kommt halt draufan, was Du genau machen willst.
Wenn das Ereignismakro Worksheet_Change in DateiA (oder DateiB, ..) steht, wird bei jeder Änderung in dem vorgewählten Zell-Bereich in dieser Datei in Zusammenfassung.xls geschrieben und gespeichert. Zusammenfassung.xls wird also ständig aktualisiert und nicht erst beim öffnen.
Zum Schließen:
ActiveWorkbook.Close
oder Workbooks(Filename).Close
siehe auch in Excel Hilfe.
Gruß
Günter
im Prinzip ist das Ergebnis wohl identisch. Es kommt halt draufan, was Du genau machen willst.
Wenn das Ereignismakro Worksheet_Change in DateiA (oder DateiB, ..) steht, wird bei jeder Änderung in dem vorgewählten Zell-Bereich in dieser Datei in Zusammenfassung.xls geschrieben und gespeichert. Zusammenfassung.xls wird also ständig aktualisiert und nicht erst beim öffnen.
Zum Schließen:
ActiveWorkbook.Close
oder Workbooks(Filename).Close
siehe auch in Excel Hilfe.
Gruß
Günter
Antwort 8 von Aliba
Hi Plip,
so sollte es funzen:
Sub Makro2()
Selection.Copy
Workbooks.Open FileName:="C:\Eigene Dateien\Supportnet\Zusammenf.xls"
Sheets("Tabelle2").Select
Range("B4").Select
ActiveSheet.Paste Link:=True
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
CU Aliba
so sollte es funzen:
Sub Makro2()
Selection.Copy
Workbooks.Open FileName:="C:\Eigene Dateien\Supportnet\Zusammenf.xls"
Sheets("Tabelle2").Select
Range("B4").Select
ActiveSheet.Paste Link:=True
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
CU Aliba
Antwort 9 von Phlip
Danke fuer Eure Hilfe. Jetzt klappt's.