Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
656to660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
656to660
656to660
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel schneller machen

Excel schneller machen
29.08.2005 13:32:31
Marce
Hi zusammen,
ich hab das Problem, dass ich per VBA in ca. 83.000 Zellen was reinschreiben will. In jede was anderes: Nämlich ein Link zu einer Datenbank (Also das was mer da bei Externe Daten importieren machen kann).
Das Problem ist, dass das extrem lange dauert, obwohl ich ScreenUpdating aus habe und Calculation auf Manual, also ihn nichts rechnen lasse.
Das hat bisher auch gereicht, wenn ich nur was in Excel hatte, aber mit einer DB bewirkt das nichts :(
Frage: was kann ich noch machen, damit er mir das schneller macht? kann ich noch was ausschalten?
Danke schonmal im Vorraus - wenn was unklar iss sagt es!
Marce

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel schneller machen
29.08.2005 13:49:27
Rocky
HAllo,
zeig mal deinen Code her. da kann man meist ne menge rausholen!
Guß Rocky
AW: Excel schneller machen
29.08.2005 13:58:54
Marce
[code]

Sub eintragen()
(...)
For j = 19 to 256
For i = 0 To 50
Call setDBLink(e_dat1, e_dat2, e_PhKat, e_projekt, Cells(6 + 5 + i * 20, j))
Next i
Next j
End Sub


Sub setDBLink(a_Dbeginn As String, a_Dende As String, a_PhKat As String, a_Projekt As String, a_dest As Range)
a_Ph = Left(a_PhKat, 1)
Dim a_Kat As Integer
If Right(a_PhKat, 2) = "AB" Then
a_Kat = 14
ElseIf Right(a_PhKat, 2) = " PS" Then
a_Kat = 12
Else
a_Kat = 13
End If
sqlquerry = "SELECT ... FROM ... INNER JOIN ... ON ... WHERE ... GROUP BY ..."
With ActiveSheet.QueryTables.Add(Connection:=Array("ODBC;DSN=Microsoft Access-Datenbank;DBQ=O:\bla.mdb;DefaultDir=O:\;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"), Destination:=a_dest)
.CommandText = sqlquerry
.Name = "Std." & Left(a_Projekt, 5) & "." & a_PhKat & "." & a_Dbeginn
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = True
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = False
.Refresh BackgroundQuery:=False
End With
End Sub

[/code]
das ist der Code - hab ein paar nicht relevante Sachen rausgelassen - z.B. Variablendeklaration usw.
Hoffe es hilft weiter
Marce
Anzeige
Passe OT ; Profi gesucht
29.08.2005 14:32:54
Rocky
-
AW: Excel schneller machen
29.08.2005 14:55:25
Reinhard
Hi Marce,
mit select case bist du 5 % schneller, siehe nachfolgenden Code.
5*6=11 *g
Ich würde die Untersub in den Hauptcode einbauen, da sparts du 12000 Calls.
Bei Query.add alle Parameter die den Standardeinstelleungen entsprechen weglassen.
Wie kommst du auf 83000? Ivh komme nur auf 12000 !?
Gruß
Reinhard
Sub tt()
Dim a_PhKat As String, a_Kat As Byte, t As Long
[a1] = Timer
For t = 1 To 100000
a_PhKat = "ABCDE"
If Right(a_PhKat, 2) = "AB" Then
a_Kat = 14
ElseIf Right(a_PhKat, 2) = " PS" Then
a_Kat = 12
Else
a_Kat = 13
End If
Next t
[B1] = Timer
For t = 1 To 100000
Select Case Right(a_PhKat, 2)
Case "AB"
a_Kat = 14
Case "PS"
a_Kat = 12
Case Else
a_Kat = 13
End Select
Next t
[C1] = Timer
End Sub

Anzeige
AW: Excel schneller machen
29.08.2005 15:19:58
Marce
Hi,
danke erst mal.
Also das mit dem Select-Case werd ich machen - wird aber nicht viel bringen, da der Teil eh keine Zeit in anspruch nimmt (hab ne Zeitmessung gemacht) der Call Teil braucht die Zeit (je Call ca. 23 sec.), der Rest braucht insgesamt unter 1 sec.
Das mit dem Call hab ich gemacht, weil ich die Sub mit verschiedenen Parametern verwende. So kommen auch die 83.000 zu stande. Die Sub wird insg. 7 Mal mit unterschiedlichen Parametern aufgerufen.
Bin also immer noch auf Hilfe angewiesen...
Marce

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige