[VBA excel 2007] xlCalculationManual probleem

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 20:21
Hi ik zit met een stuk code te worstelen die het volgende doet:

-> 1: ga naar een file op netwerk
-> 2: open de file en copieer column A-G
-> 3: ga naar de tab in originele werkboek
-> 4: paste de zooi in A-G
-> 5: pak volgende file

Nou staat bovenin de macro een call killall()

Echter tijdens het kopieren en plakken blijft dat ding af en toe rekenen....
Er is een andere data plugin active, maar buiten VBA om calc op manual zetten voorkomt dat dat update, dus aangenomen dat dat ook zo werkt binnen vba. (Dit is een bloomberg plugin en kan ik niet aanpassen)

Iemand enig idee waarom die blijft rekenen? En of hoe ik dat echt stop? Want dit rekenen van 1 cyclus kost 2 minuten... en dat 43x ofzo..


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub killall()
    With Application
      '  .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .EnableEvents = False
    End With
End Sub

Sub unkillall()
    With Application
     '   .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
    End With
End Sub


Dan heb ik die macro:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Sub Import_Issuer_data()

    Call killall
    
    Dim worksheetnaam As String
    worksheetnaam = ActiveWorkbook.Name
       
    For i = 2 To 44

        Dim tabnaam As String
        Dim naamfileurl As String
        Dim naamfile As String
        Dim update As Boolean
        Dim issuer As String
        
        update = 0
                
        tabnaam = Sheets("BLA").Cells(i, 1).Value
        naamfileurl = Sheets("BLA").Cells(i, 17).Value
        naamfile = Sheets("BLA").Cells(i, 16).Value
        issuer = Sheets("BLA").Cells(i, 2).Value
        
        For j = 2 To 5
            If (Sheets("BLA").Cells(j, 12).Value = issuer) Then
                update = Sheets("BLA").Cells(j, 13).Value
            End If
        Next j
        
        If update Then
        
            Workbooks.Open naamfileurl, Origin:=xlWindows
            Columns("A:G").Select
            Application.CutCopyMode = False
            Selection.Copy
            
            Windows(worksheetnaam).Activate
            Sheets(tabnaam).Select
            Range("A:G").Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
          
            Windows(naamfile).Activate
            Application.DisplayAlerts = False
            ActiveWindow.Close
        End If
        
        update = 0
        
        Next i
    Sheets("BLA").Select    
    
    Call unkillall    
    
End Sub

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Change() zou niet mogen worden aangeroepen vanwege de uitgeschakelde events. Heb je misschien in andere code Calculate gebruikt? Als dat het geval is, zou je daar een check moeten inbouwen of killall niet eeder was aangeroepen (dus: lees variabele uit).

Als debug-optie kan je ook tijdelijk de addin uitschakelen, kan indien nodig dan ook via VBA in je killall-procedure.

offtopic:
Even een pet peeve noemen: laat .activate en .copy / .paste weg en assign waarden direct. Is netter, laat je GUI en je clipboard met rust, en is bij veel data vast nog sneller ook.

[ Voor 0% gewijzigd door F_J_K op 27-06-2011 10:37 . Reden: stomme typo's ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 20:21
Ok is iets raars:

1) geen excel open behalve gewoon leeg workbook en die .csv files openen snel
2) mijn hoofd excel open en dat ding opent traag.... wat er ook gebeurd dat ding geeft gewoon weer dat die aan het rekenen is, terwijl calculation uit staat.
3) rename ik de .csv naar .xls dan opent die hem wel snel (maar is dan natuurlijk wel alles in 1 kolom, (zou dan dus nog text to columns moeten doen met , als delimiter) en zou dan al die files moeten gaan renamen


Addins ff allemaal disable / enable maakt niets uit... helaas.

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Hmm. Bug ontdekt? Als het als xls(x) wel goed gaat dan zou ik dat vooralsnog dus maar zo doen. Dan liever niet hernoemen en misbruik maken van fout gedrag, maar netjes importeren ;) csv-content kan je eventueel misschien ook met de macro zelf importeren, dan meteen met de juiste settings.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)