Makro beschleunigen
Wolfgang
habe folgendes Problem und hoffe, ihr könnt mir ein paar Tips geben..
In einer Excel Datei sind auf 15 Arbeitsblättern jeweils 10 kleine Rechentabellen untergebracht.
Zu diesen soll, für den Fall dass sie ausgefüllt worden sind, ein Diagramm angezeigt werden, dessen Daten aus einer anderen Excel Datei stammen.
Das Problem ist nur, dass ein Makrodurchlauf, wenn für alle Tabellen Daten geholt werden müssen, ca. 1:15 Minuten dauert.
Der Code, der für eine der 150 Tabellen die Daten holt sieht folgenermaßen aus:
----------
If Worksheets("WSG30").Cells(4, 1).Value = 0 Then
Worksheets("WSG30").ChartObjects("Diagramm 3").Visible = False
Else
Worksheets("WSG30").ChartObjects("Diagramm 3").Visible = True
Dateiname = Worksheets("WSG30").Cells(4, 1).Value & ".xlsx"
objexcel.Workbooks.Open (ThisWorkbook.Path & "\" & Dateiname)
objexcel.Visible = False
Set objsheet = objexcel.Sheets("2012")
izl = 30
Do Until inh = "Bedarf"
inh = objsheet.Cells(izl, 1).Value
izl = izl + 1
Loop
For Spalte = 4 To 15 Step 1
Worksheets("Tabelle5").Cells(58, Spalte).Value = objsheet.Cells(izl - 1, Spalte)
Next
Do Until inh = "Normal-Kapazität"
inh = objsheet.Cells(izl, 1).Value
izl = izl + 1
Loop
For Spalte = 4 To 15 Step 1
Worksheets("Tabelle5").Cells(61, Spalte).Value = objsheet.Cells(izl - 1, Spalte)
Next
Do Until inh = "Maximal-Kapazität"
inh = objsheet.Cells(izl, 1).Value
izl = izl + 1
Loop
For Spalte = 4 To 15 Step 1
Worksheets("Tabelle5").Cells(68, Spalte).Value = objsheet.Cells(izl - 1, Spalte)
Next
objexcel.Workbooks.Close
End If
-----
Dieser Code ist aktuell ganze 150 mal vorhanden, weil ich es nicht geschafft habe, die Worksheet/ Diagrammwahl über Variablen zu steuern.
Nun habe ich persönlich 3 Ansätze, wie es eventuell schneller geht,
Zum einen habe ich versucht, mit Arrays den Kopiervorgang zu erledigen..
Da ich mich mit Arrays nicht auskenne bin ich da schonmal gegen eine Wand gelaufen..
Zum anderen steht die Frage im Raum, ob man die Daten kopiert bekommt, ohne die Excel Dateien alle einzeln zu öffnen.. bzw. ob man die Suche innerhalb der Exceldatei durchführen kann, ohne diese zu öffnen.
Und ja..die dritte Möglichkeit ist vielleicht den Code per Variabler Worksheet/ Diagrammanwahl zu verkürzen, wobei ich wie schon erwähnt daran gescheitert bin.
Ich hoffe ihr könnt mir hier weiterhelfen.
Lieben Gruß