Baxxe Geschrieben 24. Mai 2006 Teilen Geschrieben 24. Mai 2006 Ich habe hier die Aufgabe aus einer (großen) Exceldatei ein Diagramm auszugeben. Kein Problem denk ihr? Dann mal fleißig weiter lesen: Die Exceldatei wird automatisch generiert und den Generierungsprozess kann ich nicht beeinflussen. Sie besteht aus mehreren Seiten. Auf jeder Seite ist genau eine Tabelle abgebildet. Die Seiten sind nach dem Datum benannt an dem sie der Exceldatei hinzugefügt wurden. Die Tabellen zeigen eine detaillierte Übersicht über den Festplattenspeicherplatz von Laufwerk C eines Rechners. Die Aufzeichnungen haben Mitte Januar begonnen und seit dem wurde der Exceldatei für jeden Tag eine neue Seite mit entsprechender Tabelle hinzugefügt (Rund 120 Seiten). Meine Aufgabe ist es nun ein Diagramm zu erstellen, welches den max. Festplattenspeicherplatz, den belegten Platz und den freien Platz im bezug zum Datum anzeigt. Erschwerend kommt hinzu, dass bis auf das Datum alle Daten in einer Zelle stehen. Hier meine ersten Ansätze: Die Felder der einzelnen Seite kann ich so erreichen: ='Seitenname'!Feld z.B.: ='5.13.2006 20-51-32'!A3 oder ='5.13.2006*'!A3 "Rückgabewert" ist jeweils der Inhalt des Feldes "A3" auf der Seite "5.13.2006 20-51-32". Ich brauch von jeder Seite die Felder A1 und A3. A1: TreeSize Professional Bericht, 5/13/2006 8:51 PM A3: Laufwerk: \\LBMPDC01\c$\ Größe: 40,962.6 MB Belegt: 5,808.2 MB Frei: 35,154.4 MB 4096 Bytes pro Cluster (NTFS) Ja, die Angaben stehen jeweils in EINEM Feld. Aus diesen beiden Angaben pro Seite soll ich nun ein Verlaufsdiagramm "erstellen" an dem man sehen kann wie sich die Speicherplatzbelegung im Laufe der Tage ändert. Mit normalen Excelmitteln ist das aber nicht wirklich möglich v.a. weil das ganze nicht einmalig sondern dynamisch geschehen soll. Es soll jeden Tag möglich sein sich das aktuelle Diagramm anzeigen zu lassen ohne großartig Hand anzulegen. Meine ersten Ideen waren folgende: Alle A1- und A3-Felder sollten in einer Tabelle angezeigt werden (diese Tabelle kann sich natürlich auch in einer anderen Exceldatei befinden). Und von dieser Tabelle wird dann das Diagramm erstellt. Probleme an der Sachen sind: Wie kann ich die Felder A1 und A3 aus allen Seiten auslesen? Wie bekomme ich die einzelnen Daten aus den jeweiligen Feldern heraus? Wie kann ich das ganze automatisiert ablaufen lassen (Ich hab kein bock 120 Seiten und mehr durchzuklicken oder manuell einzugeben)? Dummerweise hab ich auch Null Ahnung von VB-Makros Kann mir jemand helfen? PN für die Exceldatei oder ICQ: 71226633 PS: Ich bin Systemintegrator, kein Anwendungsentwickler. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Baxxe Geschrieben 31. Mai 2006 Autor Teilen Geschrieben 31. Mai 2006 mir würds schon reichen, wenn ich ein paar quellen, links oder isbns bekommen würde Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fliop Geschrieben 31. Mai 2006 Teilen Geschrieben 31. Mai 2006 hm... also mit VBA kenn ich mich auch nicht aus... aber du könntest evtl. PHP arbeiten?! Ich bin grad dabei ein Script zu schreiben das die dynamisch aus einer Exceldatei ausliest... bis jetzt werden die Inhalte allerdings nur in HTML wieder ausgegeben und noch nicht in eine neue Datei gespeichert... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fliop Geschrieben 31. Mai 2006 Teilen Geschrieben 31. Mai 2006 Ok, bin schon etwas weiter! Falls du schn was fertiges hast, sag bitte bescheid! Und ansonsten schreib mal welche Daten du für die Auswertung brauchst... also Datum, belegter Speicher ...? Ich hoffe es wird nicht so dringend benötigt?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Baxxe Geschrieben 1. Juni 2006 Autor Teilen Geschrieben 1. Juni 2006 Danke, ich hab dir mal auf deine PN geantwortet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
-roTekuGeL- Geschrieben 1. Juni 2006 Teilen Geschrieben 1. Juni 2006 makro: tabellenzeile ansprechen: Dim das As String das = Sheets("Sheet1").Cells(1, 3)[/PHP] sheet1 ist der name deiner tabelle... das sheets object heißt in der deutschen excel-version tabelle oder so also: [PHP]das = Tabelle("Sheet1").Cells(1, 3) 'oder so... oder aber: Dim das As String Dim das2 As String das2 = "Sheet1" das = Sheets(das2).Cells(1, 3)[/PHP] hier könntest du dann den tag in die variable nehmen und so alle tabellenblätter nacheinander durchsehen (mit einem loop drumrum eben) deine daten kannst du dann mit dem split befehl oder so trennen... oder auch mit mid (einfach in excel eintippen - also im visual basic fenster - und f1 drücken...) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Baxxe Geschrieben 2. Juni 2006 Autor Teilen Geschrieben 2. Juni 2006 Danke für den Tipp mit dem mid(). Ich hab es nun hinbekommen. Danke allen für die Hilfe! Hier noch der Quellcode: Dim xlsEinlesen Dim xlsAusgeben Set xlsEinlesen = WScript.CreateObject("Excel.Application") Set xlsAusgeben = WScript.CreateObject("Excel.Application") xlsAusgeben.Visible = True xlsAusgeben.Workbooks.Add 'Neue Mappe für die Ausgabe öffnen With xlsAusgeben 'Überschriften erstellen .Range("A1").Select .ActiveCell.Value = "Datum" .Range("B1").Select .ActiveCell.Value = "Größe" .Range("C1").Select .ActiveCell.Value = "Belegt" .Range("D1").Select .ActiveCell.Value = "Frei" End With With xlsEinlesen .Visible = True .Workbooks.Open ("C:\LBMPDC01C$.xls") 'Quelldatei öffnen For i = 1 To .ActiveWorkbook.Sheets.Count 'For-Schleife, welche die Tabellen durchgeht .Sheets(i).Select With xlsAusgeben 'Erstellen der Ausgabe. .Range("A" & i + 1).Select .ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(1, 1),32,9) 'Eingrenzen der Zeichenfolge aus einer Zelle .Range("B" & i + 1).Select 'Syntax: Mid(string, start[, length]) .ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(3, 1),36,8) 'string: Zeichenfolgenausdruck (Quellzelle) .Range("C" & i + 1).Select 'start: Position in string, an der die zurückzugebende Zeichenfolge beginnt .ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(3, 1),61,8) 'length: optional; Anzahl der zurückzugebenden Zeichen .Range("D" & i + 1).Select .ActiveCell.Value = mid(xlsEinlesen.ActiveSheet.Cells(3, 1),83,8) .ActiveCell.Offset(1, 0).Select End With Next End With Msgbox "Auswertung beendet!" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.