Arrestare la macro su shell



  • Arrestare la macro su shell
    di Tullio (utente non iscritto) data: 24/09/2013 17:38:14

    Buonasera a tutti,
    eccomi di nuovo.
    Avrei la necessità di aprire un file.xls chiuso per copiare il foglio esistente "Fattura" nel foglio vuoto del progetto attivo che si chiama "Xnotule" .
    Ho provato ad aprirlo con "shell", ma nel tempo che apre explorer la macro prosegue.
    Mi ridate una mano?



  • di HarryBosch data: 24/09/2013 20:37:12

    Mostraci la macro così vediamo come intervenire.
    E personalmente, non utilizzerei il comando Shell per aprire un altro file Excel; ad esempio, non è più immediata un'istruzione di questo tipo?

    Workbooks.Open Filename:="C:user... omefile.xlsx"


  • Arrestare la macro su shell
    di Tullio (utente non iscritto) data: 25/09/2013 18:32:57

    Buonasera,
    l'utilizzo di "shell" per aprire il file è dato dal fatto che la cartella "C:contabilità2013Progetti 2013" ci sono tutti i file (progetti di notula) prodotti e salvati come ".xls" ma anche "pdf" e non ancora trasformati in notule e pertanto devo scegliere quello da trasformare.
    Non saprei come fare altrimenti, creare un file excel che mi legge la cartella e consente di scegliere?
    La procedura si articola così dopo l'apertura della "BASE PROGETTI.XLS"
    1° passo: produzione attraverso il foglio "Fattura" del progetto di notula
    2° passo: salvataggio del foglio "Fattura" con nome "x" del progetto di notula e riferimenti nella cartella prima citata.
    3° passo: apertura tramite "shell" del progetto "x" per la trasformazione in notula
    4° passo: copiare il contenuto foglio "Fattura" del progetto "x" sul foglio "Xnotule"
    5° passo: trasformazione del progetto "x" in notula e salvataggio della notula in "C:contabilità2013Notule 2013"
    La seguente cancellazione del progetto di notula viene fatta manualmente dopo i dovuti riscontri.
    -----------
    Oltre a non poter arrestare la macro, mi ritrovo con il foglio "Xnotule" che contiene il progetto che si trova nel foglio "Fattura" della "BASE PROGETTI".
    Spero di essere stato sufficientemente chiaro.
    Grazie.
    Tullio
     
    Sub Importa_progetto()
    ' Importa_progetto Macro
    Dim X
        X = Shell("Explorer.exe " & "C:contabilità2013PROGETTI 2013", 1)
     If GetInputState() = 0 Then
        Else
            If msgbox("Trasformare il progetto in NOTULA ?", vbYesNo) = vbNo Then Exit Sub
     End If
        'F = NewFile
        Workbooks(ActiveWorkbook.Name).Sheets("Fattura").Select
        Cells.Select
        Selection.Copy
        ActiveWorkbook.Close
        Windows("BASE PROGETTI CON SCADENZE.xls").Activate
        Sheets("Xnotule").Select
        Cells.Select
        ActiveSheet.Paste
        Range("C55:E59").Select
        Application.CutCopyMode = False
        Selection.ClearContents
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        Selection.Borders(xlEdgeLeft).LineStyle = xlNone
        Selection.Borders(xlEdgeTop).LineStyle = xlNone
        Selection.Borders(xlEdgeBottom).LineStyle = xlNone
        Selection.Borders(xlEdgeRight).LineStyle = xlNone
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
        Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
        Range("B12").Select
        ActiveCell.FormulaR1C1 = "NOTULA"
        Range("C15").Select
        ActiveCell.FormulaR1C1 = ""
        Workbooks(Nomeprogetto).Activate
        ActiveWindow.Close
        Call vai_ultima_cella
        Sheets("Xnotule").Activate
        Sheets("Xnotule").Cells(14, 3) = vecchionumero + 1
    End Sub
    



  • di Tullio (utente non iscritto) data: 26/09/2013 18:56:48

    Ciao a tutti,
    ho allegato alla discussione due file che utilizzo per le prove con all'interno la macro che dovrebbe svolgere l'interruzione di shell e tutto spiegato nella precedente.
    Lo fà ma solo se la procedura è fatta con F8, passo passo, se lancio la macro succede un bordello. Ma perché ? Qualcuno lo sa o c'ho i topi nel computer ?
    Grazie.
    Tullio

     
    Sub lanciashell()
    Dim a, X, Y, Appena_aperto
    a = False
     Do While a = False
        X = Shell("Explorer.exe " & "C:contabilità2013NOTULE 2013", 1)
            If MsgBox("Trasformare il progetto in NOTULA ?", vbYesNo) _
            = vbNo Then
            Workbooks.Close
            
            Exit Sub
            Else
            Windows(ActiveWorkbook.Name).Activate        
            ActiveWorkbook.Sheets(1).Select        
            a = True
            Range("B2:H65").Select 'Seleziona le celle da copiare
            Selection.Copy       
            Windows("Corso Excel.xlsm").Activate
            Sheets("Xnotule").Select
            Range("B2:H65").Select
            ActiveSheet.Paste
            
            Windows("Prova salvataggio con registrazione.xls").Activate
            Workbooks("Prova salvataggio con registrazione.xls").Close
            
            
            End If
            
      Loop
    
    End Sub
    



  • di Tullio (utente non iscritto) data: 26/09/2013 21:42:21

    Di nuovo.
    Nel precedente messaggio mi sono dimenticato di dire la sequenza.
    Aprire per primo "Corso E..." che contiene la macro l'altro è quello che viene copiato.



  • di Tullio (utente non iscritto) data: 30/09/2013 19:15:13