Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
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
Inhaltsverzeichnis

makros sind lahm

makros sind lahm
Udo
Hallo zusammen,
seitdem ich von office 2007 auf 64 bit office 2010 umgestellt habe, braucht es 15 !!! in Worten fünfzehn Sekunden bis ich wieder nach ausführen des Makros auf Excel zugreifen kann. Ich hab nen 12 ghz Prozessor und 6 GB ram. Das kann doch irgendwie nicht sein.
Auf office 2007 ging das viel schneller und schon gar nicht brauchte es nach ausführen des Makros 15 secunden bis excel wieder zur Verfügung stand.
Den Code hab ich mit Makro aufzeichnen angefertigt:

  • Sub Ro_01_R_02()
    ' 1+2 Makro
    Workbooks.Open Filename:="G:\Datenblätter\db1.csv"
    Windows("db1.csv").Activate
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array( _
    13, 1 _
    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),  _
    Array _
    (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, _
    1), _
    Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1),  _
    Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39,  _
    1), _
    Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1),  _
    Array( _
    46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52,  _
    1), _
    Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1),  _
    Array( _
    59, 1)), TrailingMinusNumbers:=True
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array( _
    13, 1 _
    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),  _
    Array _
    (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, _
    1), _
    Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1),  _
    Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39,  _
    1), _
    Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1),  _
    Array( _
    46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52,  _
    1), _
    Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1),  _
    Array( _
    59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65,  _
    1), _
    Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1),  _
    Array( _
    72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78,  _
    1), _
    Array(79, 1), Array(80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1),  _
    Array( _
    85, 1), Array(86, 1), Array(87, 1), Array(88, 1), Array(89, 1)), TrailingMinusNumbers _
    :=True
    Application.Run "PERSONAL.xlsb!format"
    Workbooks.Open Filename:="G:\Datenblätter\db2.csv"
    Windows("db2.csv").Activate
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array( _
    13, 1 _
    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),  _
    Array _
    (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, _
    1), _
    Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1),  _
    Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39,  _
    1), _
    Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1),  _
    Array( _
    46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52,  _
    1), _
    Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1),  _
    Array( _
    59, 1)), TrailingMinusNumbers:=True
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array( _
    13, 1 _
    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),  _
    Array _
    (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, _
    1), _
    Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1),  _
    Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39,  _
    1), _
    Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1),  _
    Array( _
    46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52,  _
    1), _
    Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1),  _
    Array( _
    59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65,  _
    1), _
    Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1),  _
    Array( _
    72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78,  _
    1), _
    Array(79, 1), Array(80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1),  _
    Array( _
    85, 1), Array(86, 1), Array(87, 1), Array(88, 1), Array(89, 1)), TrailingMinusNumbers _
    :=True
    Application.Run "PERSONAL.xlsb!format"
    Windows("db2.csv").Activate
    Windows("db1.csv").Activate
    Application.Run "PERSONAL.xlsb!Modul21.DreisigSpaltenSollstDuWaehlen"
    Selection.copy
    Windows("db2.csv").Activate
    Range("BH1").Select
    ActiveSheet.Paste
    Application.Run "PERSONAL.xlsb!einfuegen"
    Application.Run "PERSONAL.xlsb!spaltenvergleich"
    Windows("db1.csv").Activate
    Application.Run "PERSONAL.xlsb!Modul3.löschen"
    Application.Run "PERSONAL.xlsb!format"
    End Sub
    


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

    Betreff
    Benutzer
    Anzeige
    12 GHz?
    30.07.2012 16:12:11
    Sheldon
    Hi Udo,
    auf den Prozessor bin ich aber neugierig? Der Schnellste den ich finden konnte im Atelco-Shop hat 4.2 GHz? Im Wesentlichen nehme ich an, die Geschwindigkeit hängt von der Größe der zu importierenden csv-Datei ab, ggf. noch von deren Verfügbarkeit, z. B. wenn geladen über Netzlaufwerk etc. Und auch die obligatorische Antwort hier aus dem Forum darf ja nicht fehlen: Office 64bit bringt eh keine Vorteile, warum also nicht einfach die 32bit Version benutzen?
    Gruß
    Sheldon
    AW: 12 GHz?
    30.07.2012 16:49:01
    Udo
    stimmt, ich hab nen AMD Phenom II X4 940 Prozessor 3.00 GHz und hab den mit 4 multipliziert.
    Ich hätte auch die 32 Bit Version installiert, hab aber nur die 64er Version zur Hand gehabt. Und wie gesagt, an den Grössenverhältnissen der Makros bzw. der csv. Dateien hat sich ja nichts geändert. Die liefen unter office 2007 eben schneller.
    Anzeige
    AW: 12 GHz?
    30.07.2012 17:15:51
    mumpel
    Hallo!
    Die 64-bit-Version solltest Du wieder deinstallieren und die 32-bit-Version installieren. Unter Office 2010 Sicherungskopie bekommst Du auch eine 32-bit-Version. Der Lizenzschlüssel ist auch damit kompatibel (normalerweise).
    Die 64-bit-Version hat, was Makros angeht, ohnehin einige Schwächen. Vor allem was API angeht (Stichwort: PtrSafe)
    Gruß, René
    AW: makros sind lahm
    30.07.2012 16:58:18
    fcs
    Hallo Udo,
    Rechenpower und vorhandener Arbeitsspeicher ist nicht alles was Excel braucht.
    Was jetzt deinen Rechner ausbremst ist schwer zu sagen.
    1. Auf alle Fälle vermeide seit der Umstellung von Excel 2003 auf 2007 das Kopieren ganzer Spalten, da jetzt statt ca. 65000 Zellen jetzt mehr als 1 Mio Zellen in den Kopiervorgang invollviert sind.
    D.h. in VBA-Prozeduren wird der mit Daten belegte Bereich ermittelt und nur dieser kopiert/eingefügt.
    2. Nach einem umfangreichen Kopiervorgang sollte der Zwischenablagespeicher von Excel leergeräumt werden.
    Beispiel:
    Sub Makro1()
    Columns("A:A").Select
    Selection.Copy
    Range("J1").Select
    ActiveSheet.Paste
    End Sub
    ' Besser - einschliesslich Deaktivierung der Bildschirmaktualisierung, Ereignismakros und  _
    Neuberechnung während der Makroausführung.
    auf die Select -- Selection kann man meistens auch noch verzichten
    
    
    Sub Makro2()
    Dim StatusCalc As Long
    With Application
    .ScreenUpdating = False
    .EnableEvents = False
    StatusCalc = .Calculation
    .Calculation = xlCalculationManual
    End With
    Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Copy
    Range("J1").PasteSpecial Paste:=xlPasteAll
    Application.CutCopyMode = False
    With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = StatusCalc
    End With
    End Sub
    

    Gruß
    Franz
    Anzeige
    AW: makros sind lahm
    30.07.2012 19:54:49
    Udo
    Hallo Franz,
    Danke Dir, das waren wertvolle Hinweise.
    Gruss Udo

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige