Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wie kann ich einzelne Zellen aus mehreren Exceldateien in einer Exceldatei zusammenfassen?

Frage Microsoft Microsoft Office

Mitglied: langer0801

langer0801 (Level 1) - Jetzt verbinden

07.01.2011 um 23:41 Uhr, 15893 Aufrufe, 16 Kommentare

Liebe Forumsmitglieder.

Ich bin ein Einsteiger in VBA-Makro-Programmierung und habe eine Aufgabe von meinem Chef bekommen:
Daten aus mit VBA-Makro generierten Dateien der jeweiligen Mitarbeiter in einer Datei zusammenführen.

Vorhandene SW: WIN XP Prof. und Office 2003

Problem:
Daten aus mehreren Zellen auslesen und in eine neue Datei eintragen.
Vorhanden:
1 Ordner (c:\Wochenbericht\Team) bei der Assistentin mit mehreren Dateien mit je nur 1 Tabelle. Format: vorname name_KWxx.xls mit gleichem Aufbau
1 Enddatei mit Namen Uebersicht-Wochenbericht.xls
Folgende Zellen sollen transferiert werden:
C3 in A7
C5 in B7
E56 in C7
E55 in D7
I55 in E7

Wer kann mir einen Rat geben, wie ich dies hinbekomme?
Vielen Dank im Voraus.

Gruss Andre
Mitglied: 76109
08.01.2011 um 11:23 Uhr
Hallo Andre!

Aja, habe ich das jetzt richtig verstanden? Alle *KWxx-Dateien auf einen Schlag kreuz und quer einlesen und die Zell-Inhalte aus C3, C5, E56, E55, I55 in der Übersicht-Tabelle in die Zellen A7:E7 einfügen?????

Gruß Dieter
Bitte warten ..
Mitglied: Biber
08.01.2011 um 12:35 Uhr
Moin langer0801,

willkommen im Forum.

bitte frag vor irgendeiner handwerklichen Umsetzung deinen Chef noch mal zu dem "ganzen Plan".

Es kann eigentlich nicht so gewesen sein, dass irgendjemand sich die Mühe gemacht hat, liebevoll die Einzel-MA-KWxx-Dateien zu layouten, einzubunten, an -zig Teams zu verteilen und einsammeln zu lassen -- und dann, wenn dieser organisatorische Ablauf nach Monaten endlich etabliert ist, sich mal Gedanken darüber zu machen, wie diese Daten aggregiert/zusammengefasst werden könnten.

Egal was du da jetzt zauberst bzw zaubern lässt wird immer aussehen wie drangepappt und nienich auch nur halbwegs dokumentierbar sein.

Anyway - so wie die Aufgabe von dir verstanden wurde kann sie der Chef eigentlich nicht ernsthaft gestellt haben.

Grüße
Biber
[OT] @76109

Kleiner Tipp: bei dieser Anforderung lässt sich eine Menge Performance tunen, wenn das Makro dann einfach nur eine KWxx-Datei einliest. Macht doch inhaltlich keinen Unterschied.
[/OT]
Bitte warten ..
Mitglied: 76109
08.01.2011 um 12:50 Uhr
Hallo Biber!

Zitat von Biber:
[OT] @76109

Kleiner Tipp: bei dieser Anforderung lässt sich eine Menge Performance tunen, wenn das Makro dann einfach nur
eine KWxx-Datei einliest. Macht doch inhaltlich keinen Unterschied.
[/OT]
[OT]
Ja, genau das war mein Plan
[/OT]

Gruß Dieter
Bitte warten ..
Mitglied: swprofi
08.01.2011 um 15:42 Uhr
Die Zellwerte aus anderen Dateien zu übernehmen ist eigentlich nicht schwer, es wird nur bei sehr vielen Zellen recht mühsam. So funktioniert es:

1) Alle Excel-Dateien öffnen, die benötigt werden

2) In der Ziel-Excel-Datei in der gewünschten Zelle ein "=" eingeben (also ohne die Hochkommata)

3) Nun mit der Maus die andere Exceldatei anklicken und dort die Zelle, die übernommen werden soll

4) Fertig: in der ursprünglichen Excel-Datei, in der das "=" eingegeben wurde, steht nun die Formel, die notwendig ist, damit der Wert aus der anderen Excel-Datei angezeigt wird

5) Diesen Vorgang nun für jede gewünschte Zelle wiederholen...
Bitte warten ..
Mitglied: langer0801
08.01.2011 um 22:07 Uhr
Hallo Biber, Hallo Dieter. Hallo SWprofi.

Dieter - Du hast das Problem richtig erkannt.

Das Problem ist, dass jeder von den 15 Personen eine wöchtenlichen Bericht abgeben muss.
Dazu hat jeder eine Datei mit 52 Tabellen bekommen, in der schon ein Makro implementiert ist.
Dieses Makro erzeugt aus der Tabelle eine einzelne Datei mit nur 1 Tabelle mit dem Namen des
Salesman und der entsprechenden Kalenderwoche und versendet diese automatisch per Email
an die Assistenin.

Die Assistentin soll nun alle diese Daten zusammenfassen und in einer Liste untereinander auflaufend
das ganze Jahr zusammenfassen soll. Da ist deine Version SWprofi leider ungünstig bzw. nicht anwendbar.

Biber, dieser Wochenbericht wird jetzt erst bei uns implementiert und die Grunddatei incl. des Makros
hab ich gerade fertig. Nur an der Zusammenfassung bin ich jetzt gescheitert. Ich hab das als Gesamtauftrag
bekommen.

Hier mal die Date, die die Salesman bekommen werden: http://apfoertner.lgnas.com:9090/ge/ajp/public/94d114d091ee822d4f9b2f58 ...

Hier mal die Datei, die die Assistentin bekommen soll:
http://apfoertner.lgnas.com:9090/ge/ajp/public/06588318411bd87db4ac28e0 ...

Die Salesman Datei hab ich mal gekürzt.

Ich hoffe, ihr versteht jetzt mein Problem.
Bisher ist es mir nur mit kompletten Spalten gelungen, aber ich krieg das mit den einzelnen Zellen nicht hin.

Gruß Andre
Bitte warten ..
Mitglied: langer0801
08.01.2011 um 22:08 Uhr
Hallo Dieter,

ich habs mal für alle zusammengefasst.

Gruss Andre
Bitte warten ..
Mitglied: langer0801
08.01.2011 um 22:08 Uhr
Hallo Biber,

ich habs mal für alle zusammengefasst.

Gruss Andre
Bitte warten ..
Mitglied: 76109
09.01.2011 um 13:54 Uhr
Hallo Andre!

Erstmal ein dickes Lob, dass Du Dir die Mühe gemacht hast, Beispieldateien zum Download bereitzustellen

War auch insofern gut, weil dadurch auch gleich das Problem mit den Verknüpfungen der exportierten Kalenderwoche-Dateien für den EMail-Versand aufgefallen ist. Das Problem ist, dass die Namen in den KW-Sheets per Verknüpfung aus der Übersicht generiert werden und in der Export-Datei nicht mehr Verfügbar sind. Von daher sind noch Extramaßnahmen erforderlich.

Zum Ablauf:
Beim Makro-Start werden die *_KW#-Dateien immer komplett neu eingelesen, das hat u.a. auch den Vorteil, dass falls mal von einem Mitarbeiter, aus welchen Gründen auch immer, eine Datei fehlt, diese zu einem anderen Zeitpunkt problemlos erfasst werden kann. Desweiteren kann die Übersicht-Wochenbericht einfach für das Folgejahr kopiert werden. Nach dem Einlesen aller *_KW#-Dateien, werden diese erst nach KW und anschließend nach Namen sortiert, wobei noch zu überlegen wäre, ob in den *_KW#-Dateien-Übersichts-Sheets nicht die Reihenfolge des Namens geändert werden soll z.B. anstatt "André Testman" erst den Nachnamen "Testman, André, sowas in der Art. Ansonsten wird nach Vorname sortiert. Nach Beendigung des Einlesens, wird die Arbeitsmappe automatisch gesichert und eine Meldung ausgegeben.

Hier mal der Code zum testen (Pfad-Konstante entsprechend anpassen):
01.
Option Explicit 
02.
Option Compare Text 
03.
 
04.
Const Folder = "C:\Wochenbericht\Team" 
05.
 
06.
Const StartZeile = 7 
07.
 
08.
Sub GetWeekData() 
09.
    Dim Wkb As Workbook, Fso As Object, File As Object, Zeile As Long 
10.
     
11.
    Set Fso = CreateObject("Scripting.FileSystemObject")    'Dateisystem-Operationen 
12.
     
13.
    Range(Cells(StartZeile, "A"), Cells(Rows.Count, "E")).ClearContents 'Inhalte ab Startzeile löschen 
14.
     
15.
    Zeile = StartZeile 
16.
     
17.
    With Application 
18.
        .ScreenUpdating = False     'Bildschirmaktualisierung aus 
19.
        .AskToUpdateLinks = False   'Verknüpfung (Name aus Übersicht) ohne Abfrage aktualisieren 
20.
        .DisplayAlerts = False      'Fehlermeldung "Verknüpfung kann nicht..." unterdrücken 
21.
    End With 
22.
     
23.
    For Each File In Fso.GetFolder(Folder).Files  'Alle _KW#.xls-Dateien einlesen und eintragen 
24.
        If Fso.GetExtensionName(File.Name) Like "xls" And Fso.GetBaseName(File.Name) Like "*_KW#*" Then 
25.
            Set Wkb = GetObject(File.Path) 
26.
            With Wkb.Sheets(1)  'Werte mit Zahlenformat 
27.
                .Range("C3").Copy:   Cells(Zeile, "A").PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
28.
                .Range("C5").Copy:   Cells(Zeile, "B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
29.
                .Range("E56").Copy:  Cells(Zeile, "C").PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
30.
                .Range("E55").Copy:  Cells(Zeile, "D").PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
31.
                .Range("I55").Copy:  Cells(Zeile, "E").PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
32.
                 
33.
                'Werte ohne Zahlenformat 
34.
                'Cells(Zeile, "A") = .Range("C3") 
35.
                'Cells(Zeile, "B") = .Range("C5") 
36.
                'Cells(Zeile, "C") = .Range("E56") 
37.
                'Cells(Zeile, "D") = .Range("E55") 
38.
                'Cells(Zeile, "E") = .Range("I55") 
39.
            End With 
40.
            Wkb.Close False:  Zeile = Zeile + 1 
41.
        End If 
42.
    Next 
43.
     
44.
    Range(Cells(StartZeile, "A"), Cells(Zeile, "E")).Sort _ 
45.
        Key1:=Cells(StartZeile, "B"), Key2:=Cells(StartZeile, "A"), Header:=xlNo, Orientation:=xlTopToBottom 
46.
     
47.
    With Application 
48.
        .DisplayAlerts = True 
49.
        .AskToUpdateLinks = True 
50.
        .ScreenUpdating = True 
51.
    End With 
52.
     
53.
    ThisWorkbook.Save:  MsgBox "Fertig", vbInformation, "Wochenberichte einlesen..." 
54.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: Biber
09.01.2011 um 16:01 Uhr
Moin didi1954,

halte ich -mit Verlaub gesagt- für Grütze.

  • egal, ob die Jungs und Mädels ihre KW1 oder KW43 rübermailen; du holst die Daten immer aus dem KW1-Sheet (WkbSheet(1)).
  • selbst wenn du nun über tolldreiste Bande ("Hole aus dem Dateinamen die Info, welche KW ich lesen muss") das "richtige" KW-Datenblatt einsaugst: WTF??? Du holst die Daten aus den Detail-Sheets, obwohl die dreieinhalb Kasperwerte schon in dem "Übersichtsblatt" zusammengebraten sind?
  • Du holst den Euro-Wert aus "KW1!I55", was eine verbundene Zelle ist, was zu dem "Copy-Cell-Fehler" führt und in Folge dazu, dass du bei einem Import nun Daten und Formate übernehmen musst --> das kann doch nicht die Lösung sein.

@langer0801
WTF mailen deine Jungs & Mädels denn jedesmal eine Komplett-Kopie ihrer Excel-Datei statt einfach eine CSV-Datei mit einer gatesverdammten Zeile mit ihrem Namen/Personalnummer, Kalenderwoche und den dreieinhalb Zahlenwerten?
Es kann doch nicht dein Plan gewesen sein, dass jede Woche wieder diese Komplett-Jahres-Excel-Dateien mit 53 Wochen hin und her gemüllt werden, wenn davon genau eine KW relevant ist?
Und wer stellt sicher, dass von "Andre Testman" nicht 12 verschiedene XLS-Dateien im Wochenberichtsordner sind.

--> All in all: Ich halte das Konzept NICHT für so ausgereift, dass ich zu diesem Zeitpunkt Makros über den vorhandenen Datenwust schrapeln lassen würde.

Man/frau könnte doch mal auf einen Bierdeckel malen:
  • welche (Detail-)Informationen sind für die Detail-ErfasserInnen sinnvoll?
  • welche Daten brauche ich in einer abgehobenen Zusammenfassung?
  • welche Daten müssen dementsprechend von den Indianern an des Häuptlings Sekretärin gemailt werden?

Grüße
Biber
Bitte warten ..
Mitglied: 76109
09.01.2011 um 17:17 Uhr
Hallo Biber!

Ja stimmt, ich hole die Daten immer aus Sheet(1), was je nach KW eine andere KW enthält. Der Mitarbeiter kopiert wöchentlich aus seiner Arbeitsmappe das aktuelle KW-Sheet (MitarbeiterName_KW#*) in eine seperate Arbeitsmappe zum Versand (den Code nicht angeschaut?). D.h. am Jahresende befinden sich von jedem Mitarbeiter 52 KW-Dateien a 1 Sheet im Team-Ordner.

Aus dem Dateinamen brauche ich keine KW-Info aus dem Dateinamen zu kreieren, da diese im Sheet steht und nur dem Hinweis dient, das es eine Datei ist, die eingelesen werden soll, für den Fall, dass sich noch andere *.xls-Dateien in dem Ordner befinden z.B. Die "Uebersicht_Wochenbericht.xls"...

Die Übersicht steht in der Versand-Mappe erstens nicht zur Verfügung und zweitens, wie stelle ich dann fest, welche KW die aktuelle ist... ?

Und was die Daten angeht, reicht es auch, wenn die Zellen einmal in der Übersicht vorformatiert werden und nur die Werte eingetragen werden. Von daher lösche ich beim Neu- Einlesen auch nur die Inhalte und nicht die Formate.

Die Möglichkeiten sind nun mal unbegrenzt und eine davon habe ich anhand der gegebenen Umstände angeboten und wenn's Grütze ist, naja, es besteht ja kein Verwendungszwang! Zumindest funktioniert der Grütze-Code

Gruß Dieter

PS. Heute mit dem linken Fuß zuerst aufgestanden?
Bitte warten ..
Mitglied: langer0801
09.01.2011 um 18:05 Uhr
Hallo Dieter,

schönen Gruß von meiner Frau. Du hast das Wochenende gerettet.
Es funktioniert Spitze.

Du hast was gut bei mir!

LG Andre
Bitte warten ..
Mitglied: langer0801
09.01.2011 um 18:08 Uhr
Hallo Dieter,

ich nochmal. Biber hat die ganze Sache einfach nicht verstanden. Und GRÜTZE ist es auf alle Fälle nicht. Denn der Code funktioniert PRIMA.

Danke nochmal.

LG Andre
Bitte warten ..
Mitglied: 76109
09.01.2011 um 18:09 Uhr
Hallo Andre!

Freut mich

Mit dieser Nachricht, hast Du mir den Tag auch noch gerettet, nachdem mir Biber eine heftige Breitseite verpasst hat

Gruß Dieter
Bitte warten ..
Mitglied: 76109
09.01.2011 um 18:13 Uhr
Hallo Andre!

Yepp, gern geschehen und auch noch einen schönen Extra-Gruß von mir an Deine Frau

Gruß Dieter
Bitte warten ..
Mitglied: Biber
09.01.2011 um 22:58 Uhr
Moin didi1954,

sorry, sorry, sorry...
ich hatte in der Tat im Makro "Sub Excel_Sheet_via_Outlook_Senden()" nur das "ActiveWorkbook.SaveAs" wahrgenommen und nicht das "ActiveSheet.Copy" in der Zeile davor - ich war von gemailten Dateien im Format der Datei "Wochenbericht_bla.xls" ausgegangen.

Dann nehme ich (fast) alles zurück - außer der Frage, warum nun dieser Euronen-Betrag ausgerechnet aus einem Verbundene-Zellen-Feld ausgelesen werden muss.
Und ob statt "ActiveSheet.Copy" nicht schon beim Kopie-Erstellen "nur die Daten" statt wie jetzt die Verknüpfungen kopiert werden sollten.

Aber wenn es so funktioniert und organisatorisch handlebar ist... dann bin ich auch still.

Morgen ist ja Montag, aber für Dienstag nehme ich mir vor, wieder mit einem rechteren Fuss aufzustehen.

Versprochen
Biber
Bitte warten ..
Mitglied: 76109
09.01.2011 um 23:54 Uhr
Hallo Biber!

Ja, wer lesen kann, ist klar im Vorteil (mein Lieblingsspruch)

Die Euronen-Zelle ist nicht das eigentlich Problem und im Nachhinein, wäre es mit Copy -> nach Ziel eh nicht gegangen, da die Zellen zum Teil auch Formeln enthalten. Die störende Verknüpfung befindet sich eigentlich nur in der Zelle C3 (Name), weil alle Mitarbeiter-KW-Sheets eine Verknüpfung zur Übersicht für den Namen haben und dieses Sheet ja nicht übermittelt wird. Aber Excel macht nunmal seine standardmäßige "Aktalisieren/Nicht aktualisieren"-Abfrage, die sich mit Display-Alerts nicht unterdrücken läßt.

Allerdings hätte man der Einfachheit halber auch wirklich eine Einzeilige-CSV-Datei versenden können, sofern in der Zentrale keine Sheet-Detailansicht nötig ist?. Eventuell kann sich der TO ja noch für dafür entscheiden, doch eine CSV-Datei zu nehmen?

Ansonsten, wünsche ich Dir einen weniger nervaufreibenden Montag

Gruß Die
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...