chiusura di files dallesterno




  • di Grograman data: 02/01/2014 15:56:14

    Non ho capito bene se è la soluzione che ti serve, ma forse ti basta aprire il codice disabilitando gli eventi, e poi riattivarli prima di uscire dalla routine che apre i vari file di cui parli.

    Esempio blando non avendo visto il codice reale:
     
    Option Explicit
    
    Sub apriechiudi()
    Application.EnableEvents = 0 'annulla effetti "workbook open" e  simili
      
      Dim wb As Workbook
      
      Set wb = Application.Workbooks.Open("C:ProveContab.xlsm")
      wb.Close vbNo
      Set wb = Nothing
      
    Application.EnableEvents = 1 'riabilita eventi
    End Sub



  • di passodellupo data: 03/01/2014 14:12:36

    Grazie della risposta.
    con il tuo aiuto sono riuscito.
    di seguito il codice inserito nel primo file, quello principale...
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
          Dim risposta As Integer
          Dim salva As Boolean
          Dim b As String
          Dim conferma As Integer
          
          risposta = MsgBox("Salvo tutto e chiudo?", 3)
    
          Select Case risposta
          
          Case Is = 2 'risposta ANNULLA
          Cancel = True
          Exit Sub
          Case Is = 6 'risposta salva tutto
          salva = True ' imposta il salvataggio come si
          GoTo chiudi
         
          Case Is = 7
           conferma = MsgBox("Chiudo senza salvare?", 4)
           
            If conferma = 7 Then
            Cancel = True 'conferma no
            Exit Sub 'GoTo fine
            Else
            salva = False
            End If
            
            End Select
            
    chiudi:
            Application.EnableEvents = 0
            DisplayAlerts = False
            Workbooks("s90.xlsm").Close savechanges:=salva
            For a = 12 To 1 Step -1
            b = Format(a, "00")
            Workbooks(b & ".xlsm").Close savechanges:=salva
            Next a
            If salva = True Then
            Workbooks("00.xlsm").save
            End If
            DisplayAlerts = False
            Cancel = False
            DisplayAlerts = True
            
            Application.EnableEvents = 1
        
    End Sub



  • di passodellupo data: 03/01/2014 14:33:48

    Sicuramente, visto che sono assolutamente neofita per quanto riguarda VBA, il codice sarà pieno di errori, soluzioni non ortodosse e giri inutili. L'ultima volta che ho inserito del codice era sul Commodore 64 in BASIC.
    Non mi dispiacerebbe un giudizio e eventuali consigli.

    Grazie