surfincool
Goto Top

Für mich ein riesenproblem - Excel Zellen aus mehreren Dateien in ein neues Worksheet zusammenführen

hallo zusammen....
da mich beruf sehr stark auslastet und ich kaum ahnung von VB hab ist dies für mich ein riesenproblem.....vielleicht kann mir jemand helfen......

nach meiner bisher wochenlanger suche nach einem makro für meine aufgabe und unzähligen anpassungsversuchen gefundener scripte
schein das der letzte ausweg zu sein....<g>

da ich kaum ahnung habe von VB und mir alles zusammensuchen muss dacht ich mir ich bitte mal jemand der mir ein kleines script zusammen stellt
da verschieden prof. programmierer/innen richtig viel geld für meine anwendung wollen......(der gedanke linux wird mir immer sympathischer)bin ich nun hier gelandet.


folgende anforderung hätte ich:
ich betreibe ein photovoltaik anlage die mir jeden tag ne mail mit ner excel anlage schickt in der datum ,anlagenstatus, gesamtleistung des tages und den peak wert des tages was maximal eingespeisst wurde enthält.

dh.jeden tag ne mail mit nem anhang der als dateiname immer so beginnt "090314_EnergyReport_PVGneiting.xls"...wobei immer die ersten 6 zeichen des dateinames variieren ( datum der erstellung hier der 14.3.09)

des weiteren müssten die zellen der jeweiligen datei A9,B9,C9 und C21 in eine neue datei(worksheet) beginnend ab zeile 2 inA2,B2,C2,D2 wieder eingefügt werden.
nächste datei ( ich bekomm ja jeden tag ne neue mit neuen werten)....nächste zeile inder gleichen datei dh. zeile3 inA3,B3,C3,D3.....usw.

dies soll zur zusammen führung der monatlichen / jährlichen daten der PV anlage gedacht sein um im laufe der jahre einen überblick zu bekommen und auch zu sehen ob im durchschnitt die anlage an leistung verliert oder nicht zu protokolieren.

die bisher gesammelten anlagen befinden sich im pfad "D:\pvanhang"
die neu erstellte datei kann im gleichen ordner abgelegt werden die dann zb. den dateinamen "liste.xls" heissen kann.

ich wäre sehr froh wenn mir jemand helfen würde......

software......xp SP2 u, win7.....office 2007

vielen dank mal im vorraus
Eberhard

Content-Key: 127197

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

Printed on: April 25, 2024 at 20:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Oct 15, 2009 at 12:41:19 (UTC)
Goto Top
Zitat von @surfincool:
da verschieden prof. programmierer/innen richtig viel geld für
meine anwendung wollen......(der gedanke linux wird mir immer
sympathischer).

Öhm gehts mit Linux besser?? Denke auch da wird es Prof Programmierer geben die RICHTIG bezahlt werden wollen, für Arbeit.

Zu deinem Problem:

Denke das ist schonwieder zu Speziell als das es eine "Google-find-Download-benutze" Lösung geben wird.

Aber wenn man Google benutzt gibt es ALLE Informationen die man braucht.

Was brauchst du:

- Öffnen von Excel ".xls" Dateien
- Auslesen von Zellen
- Einfügen in eine Excel ".xls" Datei

Hier mal ein Ansatz für die Eierlegendewollmilchsau:

Excel von VB aus öffnen und schliessen:

http://www.vbarchiv.net/faq/vbvba_excel.php
Member: Iwan
Iwan Oct 15, 2009 at 12:50:58 (UTC)
Goto Top
hallo,

ich mach's dir kostenlos face-wink
dafür brauch ich aber noch ein wenig Input:
  • wie heisst das Tabellenblatt, wo die Werte herkommen?
  • was für Werte stehen in den Zellen drin (vielleicht mal Beispielwerte aller 4 Zellen)
Member: surfincool
surfincool Oct 15, 2009 at 13:28:40 (UTC)
Goto Top
hier kommt der input....

die excel datei die ich geschickt bekomme sieht folgendermassen aus:

das tabellenblatt heist immer gleich wie der dateiname......alllerdings ohne .xls ( zb."090314_EnergyReport_PVGneiting"....wobei sich für jede datei die existent ist der dateiname variiert die ersten sechs zeichen sind immer das datum der erstellung hier zb. der 14.03.09)...es bestehen also im jahr 365 dateien....kann man alle auf einen rutsch auslesen und zusammenführen ????

in A9 steht immer das datum zb. "14.03.2009"
in B9 steht immer der anlagenstatus ...in der regel "OK"
in C9 steht immer der gesammt aufgelaufene kw/h wert des tages zb. 39,98
und in C21 steht immer der KW/peak wert zb. 12.99

mehr input ich kann dir ja mal so ein excel teil per mail zukommen lassen.....
gruß
e
btw.....das das so schnell geht hätt ich auch nicht gedacht........weiter so....danke
Member: bastla
bastla Oct 15, 2009, updated at Oct 18, 2012 at 16:39:40 (UTC)
Goto Top
Hallo surfincool und Iwan!

Da ich hier schon etwas in der Art versucht hatte, habe ich das mal angepasst (ist allerdings nur oberflächlich getestet):
Sub Sammle()
Const BASISORDNER = "D:\pvanhang"  
Const DATEITYP = ".XLS"  

Const ABZEILE = 2   'Eintragungen in die Zieltabelle beginnen in Zeile 4 ...  
Const ABSPALTE = 1 '... und Spalte A.  

QuellZellen = Split("A9,B9,C9,C21", ",") 'Aus diesen Zellen der Quelltabelle werden die Daten geholt.  
UBQuellZellen = UBound(QuellZellen)
LenDateiTyp = Len(DATEITYP)

Set ZielMappe = ThisWorkbook
Set ZielTabelle = ThisWorkbook.ActiveSheet
ZielZeile = ABZEILE

Set fso = CreateObject("Scripting.FileSystemObject")  
For Each Datei In fso.GetFolder(BASISORDNER).Files
    If UCase(Right(Datei.Name, LenDateiTyp)) = DATEITYP Then
        Set QuellMappe = Workbooks.Open(Datei.Path)
        With QuellMappe.Worksheets(1) 'Daten in erstem Tabellenblatt suchen  
            For i = 0 To UBQuellZellen
                With .Range(QuellZellen(i)) 'Für jede in QuellZellen angeführte Zelle ...  
                    ZielTabelle.Cells(ZielZeile, ABSPALTE + i).Value = .Value '... Wert und ...  
                    ZielTabelle.Cells(ZielZeile, ABSPALTE + i).NumberFormat = .NumberFormat '... Zahlenformat übertragen  
                End With
            Next
        End With
        QuellMappe.Saved = True 'Quellmappe soll ohne Rückfrage (und ohne zu speichern) ...  
        QuellMappe.Close        '... geschlossen werden.  
                                
        ZielZeile = ZielZeile + 1
    End If
Next
ZielMappe.Save 'Speichern der Sammelmappe erst nach Übernahme aus allen Dateien.  
End Sub
Dieses Script ist von (einem Modul) der Sammeldatei aus zu starten, wobei alle .XLS-Dateien des Basisordners "D:\pvanhang" verarbeitet werden - die Sammeldatei sollte daher nicht in diesem Ordner liegen oder müsste explizit ausgeschlossen werden (und darf auch nicht den gleichen Namen wie eine der Einzeldateien tragen). Auch ein Kennzeichnen / Verschieben / Erkennen aufgrund des Datums der verarbeiteten Dateien wäre sicherlich eine sinnvolle Ergänzung ...

Grüße
bastla
Member: Iwan
Iwan Oct 16, 2009 at 06:14:05 (UTC)
Goto Top
guten morgen,

danke, bastla, für das Makro, aber hast du das schon mal in Excel 2007 probiert?
ich habe surfincool gestern schon geholfen und konnte wieder mal kotzen
es ist immer wieder erstaunlich, wie wenig Kompatibel Office-Versionen zueinander sind
z.B. Sortierung von Spalten: ein Makro, was in 2000 funktionierte, geht in 2003 nicht mehr - umgekehrt aber schon
z.B. Application.FileSearch: die Funktion wurde in 2007 einfach weggelassen
naja, egal, muss man wohl mit leben....

@surinfcool
bitte den Beitrag dann noch als How can I mark a post as solved? markieren, danke face-smile
Member: surfincool
surfincool Oct 16, 2009 at 09:08:49 (UTC)
Goto Top
Also.....
erst mal vielen dank an alle die sich mit meinem problem befasst haben.....das dieses forum so schnell und vor allem so effektiv handelt....extra Klasse!!!!!!

danke an iwan er hat mir ausgesprochen zuverlässig und kompetent und vor allem super schnell geholfen.... mir ganz unkomplieziert das makro erstellt und per mail zugesandt....nochmals danke an dich.....

MFG
Surfincool
Member: surfincool
surfincool Oct 16, 2009 at 09:11:57 (UTC)
Goto Top
Zitat von @H41mSh1C0R:
> Zitat von @surfincool:
> ----
> da verschieden prof. programmierer/innen richtig viel geld
für
> meine anwendung wollen......(der gedanke linux wird mir immer
> sympathischer).

naja der gedanke das alles kostenlos und der eine hilft dem anderen sofern er kann hab ich damit gemeint.........