timeout in vba



  • timeout in vba
    di franci85 (utente non iscritto) data: 13/09/2016 12:17:56

    Ciao sono neofita di vba ho una macro che esegue una serie di operazioni 'pesanti' e vorrei inserire una sorta di timeout per evitare che le compia tutte insieme e si stampi, un'altra soluzione sarebbe quella di inserire nel database una variabile che restituisca un valore true o false una volta che ha terminato uno dei processi, prima di passare al comando successivo, mi potreste aiutare, per piacere ?
    Francesca



  • di patel data: 13/09/2016 15:19:00

    allega un file di esempio e spiega bene cosa vuoi fare




  • TimeoutVba
    di Franci85 (utente non iscritto) data: 14/09/2016 10:45:36

    si grazie mille gentilissimo
    ho allegato il file in realtà la Sub andrebbe fatta 26 volte ma il for nn funziona dà errore qui : ActiveSheet.PivotTables("PivotTable3").PivotFields("File Name").CurrentPage = _
    FileAN
    Io non sono pratica né di excel né di vba, conosco altri linguaggi di programmazione e mi sono offerta di dare una mano, ma purtroppo non avendo familiarità con l'ambiente di sviluppo non riesco a capire bene i msg di debug-
    In pratica come la sub era stata concepita ripeteva 26 volte i comandi contenuti nel .txt su database analoghi e ovviamente si stampava, per quello ho pensato subito al for, per fare in modo che la sub venga eseguita una sola volta prima di passare alla successiva, ma nn funziona.
    Però si potrebbe anche inserire all'interno del database una variabile che restituisca true quando i comandi sono terminati ed con un if attiarei la seconda sub, e così via....
    O ancora mettere un timeout tra una sub e l'altra in modo da creare un tempo di attesa tra i comandi, mi sembra un'aggiustatura però
    Spero di esser stata chiara e ti ringrazio

    Franci
     
    Sub prova1()
    
    
    
    ''''''''''''' CHANGE PARAMETERS '''''''''''''''''''''''
    
     extr = "BUDGET SP MOTHER DW JUL-16 YTD VERSION 13-AUG-2016.xlsx"
     FilY = "2017"
     FileA1 = "SK BDG FY " & FilY & " one"
     FileA2 = "AP BDG FY " & FilY & " tdue"
     FileA3 = "DM BDG FY " & FilY & " templa"
    
    ' altri FileA4, A5
    
     Dim i As Integer
    Dim FileA As String
    Dim FileAN As String
    
     
    Application.ScreenUpdating = False
    
    
     '''''''''''
     'File01
     '''''''''''
     
     For i = 1 To 2
     FileAN = "FileA" & i
     MsgBox ("Risultato A+B" & s)
            
        Windows(extr).Activate
        MsgBox ("Risultato A+B" & s)
        
        Worksheets("By Product").Activate
        
        Range("a13").Select
            
        ActiveSheet.PivotTables("PivotTable3").PivotFields("File Name").ClearAllFilters
        ActiveSheet.PivotTables("PivotTable3").PivotFields("File Name").CurrentPage = _
            FileAN
        
        Workbooks.Add
        ActiveWorkbook.SaveAs Filename:= _
            "C:CICCIOBELLO" & FileAN & ".xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
            
        Worksheets("Sheet1").Name = "By Product"
            
        Windows(extr).Activate
        Worksheets("By Product").Activate
            
          LastRow = Range("H6").End(xlDown).Row
            Range1 = Range("A5:H" & LastRow).Copy
        
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Product").Activate
        
        Range("A6").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
        Windows("format for Macro.xlsx").Activate
        Range("A7:J7").Select
        Selection.Copy
        
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Product").Activate
        Range("A5").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
          
         Windows("format for Macro.xlsx").Activate
         Range("A10:J10").Select
         Selection.Copy
        
        
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Product").Activate
        Range("H6").Select
        Selection.End(xlDown).Select
        Selection.End(xlToLeft).Select
        Selection.End(xlToLeft).Select
         ActiveSheet.Paste
        Application.CutCopyMode = False
        
             
        Windows("format for Macro.xlsx").Activate
         Range("A1:J3").Select
         Selection.Copy
         Windows(FileAN & ".xlsx").Activate
        Worksheets("By Product").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
        
          Windows(extr).Activate
        Range("B1").Select
        Selection.Copy
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Product").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
         Selection.End(xlToRight).Select
        Selection.End(xlToLeft).Select
        Selection.End(xlToLeft).Select
        Selection.End(xlToLeft).Select
        Range("A6").Select
        Selection.End(xlToRight).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Range("I6").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Range("J6").Select
        ActiveCell.FormulaR1C1 = "=+RC[-2]*RC[-1]"
        Range("J6").Select
        Selection.Copy
        Range("H6").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(0, 2).Select
            Range(Selection, Selection.End(xlUp)).Select
        ActiveSheet.Paste
            Range("H6").Select
        LastRow = Range("H6").End(xlDown).Row
        Range("H6").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
        Selection = Application.WorksheetFunction.Sum(Range("H6:H" & LastRow))
            ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("G6:G" & LastRow))
          ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("F6:F" & LastRow))
            ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("E6:E" & LastRow))
           ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("D6:D" & LastRow))
            ActiveCell.Offset(0, 6).Formula = "=SUM(J6:J" & LastRow & ")"
        
            ActiveCell.Offset(0, 5).FormulaR1C1 = "=+RC[1]/RC[-1]"
        
        Columns("A:k").Select
        Columns("A:kk").EntireColumn.AutoFit
        
      Range("A1").Select
        
        '''''''''''''''''''''''''''''''''''''''''''''
        
                 
        Windows(extr).Activate
        Worksheets("By Mill").Activate
        
        Range("a13").Select
            
        ActiveSheet.PivotTables("PivotTable3").PivotFields("File Name").ClearAllFilters
        ActiveSheet.PivotTables("PivotTable3").PivotFields("File Name").CurrentPage = _
            FileAN
            
        Windows(FileAN).Activate
        Worksheets.Add
         Worksheets("Sheet2").Name = "By Mill"
      
            
        Windows(extr).Activate
        Worksheets("By Mill").Activate
            
         LastRow = Range("H6").End(xlDown).Row
            Range1 = Range("A5:H" & LastRow).Copy
        
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Mill").Activate
        
        Range("A6").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
        Windows("format for Macro.xlsx").Activate
        Range("A5:J5").Select
        Selection.Copy
        
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Mill").Activate
        Range("A5").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
          
         Windows("format for Macro.xlsx").Activate
         Range("A10:J10").Select
         Selection.Copy
        
        
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Mill").Activate
        Range("H6").Select
        Selection.End(xlDown).Select
        Selection.End(xlToLeft).Select
        Selection.End(xlToLeft).Select
         ActiveSheet.Paste
        Application.CutCopyMode = False
        
             
        Windows("format for Macro.xlsx").Activate
         Range("A1:J3").Select
         Selection.Copy
         Windows(FileAN & ".xlsx").Activate
        Worksheets("By Mill").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
        
          Windows(extr).Activate
        Range("B1").Select
        Selection.Copy
        Windows(FileAN & ".xlsx").Activate
        Worksheets("By Mill").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        
         Selection.End(xlToRight).Select
        Selection.End(xlToLeft).Select
        Selection.End(xlToLeft).Select
        Selection.End(xlToLeft).Select
        Range("A6").Select
        Selection.End(xlToRight).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        Range("I6").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Range("J6").Select
        ActiveCell.FormulaR1C1 = "=+RC[-2]*RC[-1]"
        Range("J6").Select
        Selection.Copy
        Range("H6").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(0, 2).Select
            Range(Selection, Selection.End(xlUp)).Select
        ActiveSheet.Paste
    1        Range("H6").Select
        LastRow = Range("H6").End(xlDown).Row
        Range("H6").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select
        Selection = Application.WorksheetFunction.Sum(Range("H6:H" & LastRow))
            ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("G6:G" & LastRow))
          ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("F6:F" & LastRow))
            ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("E6:E" & LastRow))
           ActiveCell.Offset(0, -1).Select
        Selection = Application.WorksheetFunction.Sum(Range("D6:D" & LastRow))
            ActiveCell.Offset(0, 6).Formula = "=SUM(J6:J" & LastRow & ")"
        
            ActiveCell.Offset(0, 5).FormulaR1C1 = "=+RC[1]/RC[-1]"
        
        Columns("A:k").Select
        Columns("A:kk").EntireColumn.AutoFit
        
         Range("A1").Select
         
             
        Application.ScreenUpdating = True
        
        Next
      
    End Sub
    



  • di alfrimpa data: 14/09/2016 11:21:53

    Devi allegare il file.

    In alto e in basso a destra della discussione trovi il pulsante "Allega file".

    Alfredo




  • timeout in vba
    di franci85 (utente non iscritto) data: 14/09/2016 10:12:40

    Ciao sono neofita di vba ho una macro che esegue una serie di operazioni 'pesanti' e vorrei inserire una sorta di timeout per evitare che le compia tutte insieme e si stampi, un'altra soluzione sarebbe quella di inserire nel database una variabile che restituisca un valore true o false una volta che ha terminato uno dei processi, prima di passare al comando successivo, mi potreste aiutare, per piacere ?
    Francesca



  • di alfrimpa data: 14/09/2016 10:46:10

    Ciao Francesca

    Ma perchè hai aperto un'altra discussione quando ne avevi una già in essere dove patel (che saluto) ti aveva chiesto di allegare un file di esempio cosa che tu non hai fatto?

    Alfredo




  • TimeoutVba
    di franci85 (utente non iscritto) data: 14/09/2016 11:07:18

    pardon ho sbagliato
    nn sono pratica di forum
    Ho messo lo stilato anziché allegare
    Franci


  • TimeoutVba
    di franci85 (utente non iscritto) data: 14/09/2016 11:24:35

    pardon ho sbagliato
    nn sono pratica di forum
    Ho messo lo stilato anziché allegare
    Franci