LORETTA B. forum

Linguaggi di programmazione => Problematiche Excel => Topic aperto da: Tullio - Settembre 28, 2013, 18:18:35

Titolo: macro funge con F8 no con F5
Inserito da: Tullio - Settembre 28, 2013, 18:18:35
Ecco il mio primo quesito:
Da un file di excel chiamato "Corso Excel" con una macro richiamo Explorer (una cartella specifica) dove seleziono un file di Excel "Prova salvataggio con registrazione" e lo apro per poi copiare un determinato foglio in un foglio già esistente di "Corso Excel" e richiudo "Prova salvataggio con registrazione"
Se eseguo la macro passo passo tutto funziona, se la eseguo o lanciandola con un pulsante o premendo F5 si ferma in un punto e da l'errore 9 - Indici non compresi nell'intervallo, poi se premo nuovamente e indifferentemente o F5 o F8 procede fino alla fine.
Allego qui il codice.
Grazie se voi esperti potreste darmi una dritta.
Dimenticavo, la macro è nel modulo 1 di Corso Excel.
Tullio
-------------------------------------------------
Sub lanciashell()
Dim a, X, Y, Ap, F_ap
a = False
 Do While a = False
    X = Shell("Explorer.exe " & "C:\contabilità\2013\NOTULE 2013", 1)
        If MsgBox("Trasformare il progetto in NOTULA ?", vbYesNo) _
        = vbNo Then
        Workbooks(2).Close
        Exit Sub
        Else
        a = True
        Workbooks(Workbooks.Count).Activate
        F_ap = ActiveWorkbook.Name
        'Se si esegue con F5 si blocca a dà errore qui sotto "Indice _
         non incluso nell'intervallo"
        ActiveWorkbook.Sheets("Fattura").Activate
        'Proseguendo con F8 o F5 va avanti fino in fondo
        Range("B2:H65").Select
        Selection.Copy
       
        Workbooks("Corso Excel").Activate
        ActiveWorkbook.Sheets("Xnotule").Activate
        Range("B2:H65").Select
        ActiveSheet.Paste
        Y = ActiveSheet.Name
        Workbooks(2).Close
       End If
  Loop
End Sub
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Settembre 28, 2013, 20:52:41
ciao Tullio.
intanto ho bisogno di chiarire alcune cose
primo: nel codice leggo queste due righe che per me sono critiche e che non capisco:
X = Shell("Explorer.exe " & "C:\contabilità\2013\NOTULE 2013", 1)    Cosa è "NOTULE 2013"? una cartella o un file?
se è un file devi aggiungere l'estensione ".xls"
X = Shell("Explorer.exe " & "C:\contabilità\2013\NOTULE 2013.xls", 1)

secondo: altro codice dubbio
ActiveWorkbook.Sheets("Fattura").Activate
esiste il foglio "Fattura" nel file che apri?

terzo: ancora col nome del file
Workbooks("Corso Excel").Activate
Workbooks("Corso Excel.xls").Activate

Chiariti questi punti possiamo continuare con l'analisi del restante codice.

Fammi sapere se ho individuato i punti critici del codice

 :ciao:
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Settembre 29, 2013, 08:44:23
Ciao micdas,
NOTULE 2013 è una cartella.
Il Foglio Fattura esiste, è proprio quello che deve essere copiato.
Ho corretto da Corso Excel a "Corso Excel.xlsm"
L'errore lo da su questa riga:  ActiveWorkbook.Sheets("Fattura").Activate.
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Settembre 29, 2013, 18:12:43
Ciao micdas,
continuando con le prove mi sono accorto che:
quando dà l'errore alla riga ActiveWorkbook.Sheets("Fattura").Activate
andando a controllare la variabile F_ap (che è alcune righe prima) questa contiene "Corso Excel.xls" mentre secondo me dovrebbe contenere "Prova salvataggio con registrazione" o sbaglio?
Mi sembrerebbe di capire che il file "Prova salvataggio con registrazione" non sia ancora attivo ma che serva un'altro input.
E' possibile che prima di rendere disponibile il file selezionato da Explorer esegua una parte delle altre istruzioni ? Pensavo di averlo intercettato con il Do..Loop.
 :n047:
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Settembre 29, 2013, 20:37:19
No Tullio, un file che esiste in cartella è sempre disponibile. Gli errori che lamenti sono dovuti ai riferimenti agli oggetti padre a cui vuoi riferirti nel codice.
Sto studiando il tuo codice e sto cercando di creare l'ambiente in cui immagino il tuo codice lavora.
Con le variabili e le costanti da te usate non mi ci raccapezzo. Specialmente le costanti alle quali per quel che posso rilevare mancano le estensioni ".xls" molto importanti per il codice VBA.

Per questi motivi ho deciso di cambiare la macro da te usata. Ma devi portare pazienza e darmi un po' di tempo per permettermi di ottenere quel che penso siano le tue aspettative.
Poi c'è quel "Workbooks(2)" che ogni tanto ricorre nella tua macro. Non mi convince affatto. Io sono abituato a chiamare gli oggetti col loro nome e non col loro indice. L'indice è molto relativo e può causare confusione ed errori.

Perciò se hai un po' di pazienza ti mostrerò la mia probabile versione.

:Felici34:
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Settembre 30, 2013, 15:32:42
Ciao Tullio,
come promesso ecco il nuovo codice che dovrebbe eseguire il compito che ti aspetti.
Tu dovresti fare dei semplici lavori preliminari.
nel file che usi per lanciare la macro
creare un nuovo foglio ed assegnargli il nome start oppure rinominare un foglio libero con tale nome
in questo foglio disegni due pulsanti:
uno lo associ alla macro leggi_con_filtro
l'altro lo associ alla macro NOTULA
infine copi queste due macro in un modulo

La prima macro serve a leggere tutti i files .xls della cartella desiderata
Codice: Non sei autorizzato a vedere i links. Registrati o Login
Sub leggi_con_filtro()
Dim Percorso, Riga, Colonna, Ext
Dim NomeFile, QuestoFile
QuestoFile = ActiveWorkbook.Name
Ext = "xls"
Percorso = "C:\contabilità\2013\NOTULE 2013"
Colonna = 1
Columns("A:G").ClearContents
If Left(Ext, 1) <> "*" Then
    Ext = "*." & Ext
End If
If Right(Percorso, 1) <> "\" Then
    Percorso = Percorso & "\"
End If
NomeFile = Dir(Percorso & Ext)
Do While NomeFile <> ""
    If NomeFile <> QuestoFile Then
    Riga = Riga + 1
    Cells(Riga, Colonna) = NomeFile
    End If
    NomeFile = Dir()
Loop
Range("A1").Select
End Sub
Questa è la macro che userai al posto della tua:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
Sub NOTULA()
Dim MioNome As String
Dim Percorso
Dim Fileorigine As String
Dim FileorigineComplete
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim intervallo As Range
Dim uColonna, uRiga, R, C
'   si controlla se la cella contenga un valore
Percorso = "C:\contabilità\2013\NOTULE 2013"
MioNome = ActiveWorkbook.Name
If ActiveCell = "" Then
    MsgBox "Scegliere una cella cove è indicato un file"
    Exit Sub
End If
Fileorigine = ActiveCell.Value
FileorigineComplete = Percorso & Fileorigine
'   si controlla che il file da aprire esista
If Dir(FileorigineComplete) = "" Then
    MsgBox "impossibile trovare il file"
    Exit Sub
End If
'   viene richiamata un'altra applicazione Excel
Application.EnableEvents = False
Set xlApp = Excel.Application
'   viene aperto il file di origine dati e selezionato il foglio Fattura
Set xlBook = xlApp.Workbooks.Open(FileorigineComplete)
Worksheets("Fattura").Select
If MsgBox("Trasformare il progetto in NOTULA ?", vbYesNo) = vbNo Then
    Workbooks(Fileorigine).Close
    Exit Sub
End If
'   viene copiato l'intervallo "B2:H65"
Range("B2:H65").Select
Selection.Copy
'   viene attivata la cartella di lavoro principale ed il foglio Xnotule
Windows(MioNome).Activate
Worksheets("Xnotule").Select
'   vengono incollati i dati prima copiati nell'intervallo "B2:H65"
Range("B2:H65").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'   fine dei lavori
Worksheets("start").Select
Application.EnableEvents = True
Workbooks(Fileorigine).Close
End Sub

E' tutto. I commenti che ho inserito nella macro NOTULA dovrebbero aiutarti a capire quel che fa il codice.

Fammi sapere se questa da problemi   :ciao:
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Settembre 30, 2013, 18:00:53
Ciao micdas,
 :Cartelli36:
funziona alla perfezione, ho solo aggiunto "\" & alla riga   -   FileorigineComplete = Percorso & Fileorigine.
Grazie ancora.
e già che ci sono ti chiedo anche:
ci sono diverse Path dalle quali vado a pescare i file, 2011,2012,2013 e fra un pò anche 2014 dovrei modificare il "Leggi con filtro" e fargli indicare prima le cartelle giusto ?
A presto.
Tullio

Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Settembre 30, 2013, 18:05:32
Ciao Tullio,
l'istruzione Percorso = "C:\contabilità\2013\NOTULE 2013" è indicato in entrambe le macro.
Quindi se modifichi in uno devi modificare anche nell'altro.

 :ciao:
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Settembre 30, 2013, 18:12:13
Ciao micdas,
non mi sono spiegato, vorrei prima leggere i file del 2013, se quello che cerco non è lì, leggere la cartella 2012 e in caso anche la 2011 per poter selezionare il file che mi serve.
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Settembre 30, 2013, 18:30:37
 :Cartelli45:

Ext = ".xls"
If Left(Ext, 1) <> "*" Then
    Ext = "*." & Ext
End If
If Right(Percorso, 1) <> "\" Then
    Percorso = Percorso & "\"
End If
NomeFile = Dir(Percorso & Ext)

Quante cose devo imparare, questa è l'uovo di Colombo.
Grazie ancora micdas.

Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Ottobre 01, 2013, 11:27:55
Buongiorno micdas,
ho fatto delle modifiche necessarie per procedere sullo pseudo programma e mentre la sub Leggi_con_filtro
va bene senza intoppi, la sub NOTULA si blocca nei tre posti indicati
e appare la form "Esecuzione del codice interrotta" ma con F5 o F8 prosegue fino alla seconda e poi alla terza interruzione e io non riesco a fare in modo che non si interrompa.
Puoi dirmi qualcosa in merito?
La variabile Anno è Public.
________________________________________________________________________________________________________________
Sub leggi_con_filtro()
Dim Percorso, Riga, Colonna, Ext
Dim NomeFile, QuestoFile
Columns("A:G").ClearContents
QuestoFile = ActiveWorkbook.Name
Ext = "xls"
Anno = InputBox("IMMETTERE L'ANNO DEL PROGETTO DI NOTULA DA RICERCARE", "          Ricerca Progetto di Notula")
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno
Colonna = 1
If Left(Ext, 1) <> "*" Then
    Ext = "*." & Ext
End If
If Right(Percorso, 1) <> "\" Then
    Percorso = Percorso & "\"
End If
NomeFile = Dir(Percorso & Ext)
Do While NomeFile <> ""
    If NomeFile <> QuestoFile Then
    Riga = Riga + 1
    Cells(Riga, Colonna) = NomeFile
    End If
    NomeFile = Dir()
Loop
Range("A1").Select
________________________________________________________________________________________________________________
End Sub
Sub NOTULA()
Dim MioNome As String
Dim Percorso
Dim Fileorigine As String
Dim FileorigineComplete
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim intervallo As Range
Dim uColonna, uRiga, R, C
Dim pagamento As String

'   si controlla se la cella contenga un valore
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno & "\"
MioNome = ActiveWorkbook.Name
If ActiveCell = "" Then
    msgbox "Scegliere una cella dove è indicato un file"
    Exit Sub
End If
Fileorigine = ActiveCell.Value
FileorigineComplete = Percorso & Fileorigine
'   si controlla che il file da aprire esista
If Dir(FileorigineComplete) = "" Then
    msgbox "impossibile trovare il file"
    Exit Sub
End If
'   viene richiamata un'altra applicazione Excel
Application.EnableEvents = False
Set xlApp = Excel.Application
'   viene aperto il file di origine dati e selezionato il foglio Fattura
Set xlBook = xlApp.Workbooks.Open(FileorigineComplete)

Worksheets("Fattura").Select '***************SI BLOCCA QUI CON ESECUZIONE CODICE INTERROTTA

If msgbox("Trasformare il progetto in NOTULA ?", vbYesNo) = vbNo Then
    Workbooks(Fileorigine).Close
    Exit Sub
End If
'   viene copiato l'intervallo "B2:H65"
Range("B2:H65").Select
Selection.Copy
'   viene attivata la cartella di lavoro principale ed il foglio Xnotule
Windows(MioNome).Activate
Worksheets("Xnotule").Select
'   vengono incollati i dati prima copiati nell'intervallo "B2:H65"
Range("B2:H65").Select
ActiveSheet.Paste

Application.CutCopyMode = False '****************POI SI RIBLOCCA QUI

'   fine dei lavori
'Worksheets("Ricerca_per_notule").Select 'da micdas
Worksheets("Xnotule").Select
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 = ""
    Call vai_ultima_cella
    Sheets("Xnotule").Activate
    Sheets("Xnotule").Cells(14, 3) = vecchionumero + 1
    Sheets("Xnotule").Cells(15, 3) = vecchiadata
    pagamento = "Pagamento effettuato con " & InputBox("Immettere il tipo di pagamento e numeri di riferimento", "Pagamento effettuato con")
   
    Sheets("Xnotule").Range("B25:D26") = pagamento ' ***********E QUI SI RIBLOCCA ANCORA
   
    Application.EnableEvents = True
Workbooks(Fileorigine).Close False

End Sub
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Ottobre 01, 2013, 14:22:21
No Tullio, non ci siamo, almeno in parte.
Il suggerimento che ti ho mostrato non si adatta a quel che stai facendo ora. Il mio esempio prevede il lavoro sulla sola cartella indicata sia nella macro Sub leggi_con_filtro() che nella macro Sub NOTULA().
Per fare quello che dici tu occorre modificare entrambe le macro.

La prima macro
Citazione
Anno = InputBox("IMMETTERE L'ANNO DEL PROGETTO DI NOTULA DA RICERCARE", "          Ricerca Progetto di Notula")
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno
e questo va bene ma solo in parte. La macro giustamente legge tutti i files che si trovano nella cartella "Percorso" e li trascrive nel foglio.

La seconda macro
Citazione
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno & "\"
Questo è assolutamente errato. Dove leggi il valore da assegnare alla variabile "Anno"?
E' questo che causa l'errore perchè se vai a leggere la stringa che vai a creare contiene questo: C:\contabilità\\PROGETTI \

Tanto per andare avanti nel tuo pregetto non dovresti modificare le mie macro ma solo apportare delle piccole modifiche legate a quel che vuoi fare.

Nella prima macro:
dopo la InputBox l'anno scelto devi scriverlo in una cella lontana dalle celle dove vengono scritti i nomi dei files (per esempio in H1, oppure in K1, ecc.
poi continui con quel che è scritto nella macro

Nella seconda macro:
leggi l'anno dalla cella di appoggio
Anno = Range("H1")
poi crei il percorso
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno & "\"

Con questo dovresti eliminare molti, se non tutti gli errori.
Quando vedi che questa cosa funziona puoi passare alle ulteriori modifiche

 :ciao:
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Ottobre 01, 2013, 16:11:55
Ciao micdas,
Non è mia intenzione mettermi in urto con te, anche perché da quelle quattro righe di codice che mi hai scritto ho avuto conferma (se casomai avessi avuto dei dubbi ma che non avevo) che la tua disponibilità ad aiutare in aggiunta alla conoscenza della materia sono veramente una cosa preziosa della quale sono felice di poter beneficiare, pertanto ti chiedo scusa se in qualche modo (certamente involontario) ti ho offeso.
Devo però dirti che il progetto al quale sto lavorando (per l'Ufficio di mio figlio Marco - Perito Industriale) e che è il mio divertimento, è partito molto tempo fà con un semplice foglio sul quale fare un Progetto di Notula e stamparlo. Ora sta quasi diventando qualcosa di serio, si articola su 5 fogli (Fattura,Archivio,Registro_notule,Xnotule,Ricerca_per_notule (ex tuo Start)) e un Archivio esterno (Rubrica Clienti sempre costruito da me in Access) dal quale pesco i dati relativi ai clienti per riempire il Progetto di notula sul fFattura.

PROCEDIMENTO-
Fatto il progetto del quale poi archivio la scadenza in fArchivio e salvo il file.xls nella cartella PROGETTI&Anno, quindi a pagamento avvenuto attraverso il fRicerca_per_notule vado a ripescarlo, leggo il fRegistro_notule dal quale prelevo l'ultimo numero e l'ultima data per inserirli sul fXnotule che ora contiene il Progetto e che trasformerò in notula, registrandola poi su fRegistro_notule e salvando la notula.xls nella cartella dovuta.
E quindi qualcosa devo modificare per collegare il tutto.
E' vero che le informazioni che ti ho passato la prima volta che abbiamo avuto un contatto erano stringate, ma mi sembrava assurdo torturanti con questa tiritera.
Spero tantissimo di aver chiarito qualsiasi incomprensione.
Ma venendo a quanto mi scrivi:
per quanto riguarda la macro NOTULA() questo è stato il mio pensiero.
Dichiaro "Public Anno as String" poi all'avvio della Sub Leggi_con_filtro Anno prende il valore della Inputbox che mantiene anche nella macro NOTULA() però da quello che mi scrivi sembra che non sia così, non sò cosa dire a meno che tu non intenda che la macro NOTULA() possa essere attivata anche da sola senza prima la Sub Leggi_con_filtro cosa che potrebbe anche essere ma che non ha senso.
Però, però, devo anche dirti che ho qualche reminescenza di Vb (solo codice) che potrebbe farmi sballare su excel dove vedo che tu appoggi tutto agli oggetti.
Provo i suggerimenti che mi hai dato.
Grazie ancora e ti terrò aggiornato.
Tullio
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Ottobre 01, 2013, 17:59:04
Ciao Tullio,
forse prima mi sono espresso male e se ho dato una impressione sbagliata, ti chiedo scusa. Vorrei solo che alla fine tu riesca a venire a capo di questa avventura. Vedrai che pian piano ne veniamo a capo.
Dunque.
Sarà un mio limite, ma non amo molto le variabili pubbliche, ma piuttosto, dove non posso fare altrimenti, uso appoggiare i dati sul foglio.
Non amo lavorare con variabili pubbliche perchè ti costringe ad eseguire le varie macro in sequenza.
La macro Sub leggi_con_filtro() viene eseguita solo se serve. Quindi, se non viene eseguita, la variabile, anche se pubblica non viene valorizzata.
Perciò, per fare quel che intendi fare, lavorare in modo dinamico con le varie cartelle e sottocartelle, quando usi questa macro, devi per forza usare una cella di appoggio anche per l'anno. E con questo la storia del prodromo della creazione dinamica dei vari percorsi è conclusa.
Ora viene il turno della seconda macro: Sub NOTULA().
Così come te l'ho presentata la prima volta funziona solo con una cartella fissa.
Per questo motivo abbiamo bisogno di creare dinamicamente i vari percorsi. Allora che faccio?
Leggo il valore (l'anno) dalla cella dove è stata appoggiata
Creo il nuovo percorso come hai fatto tu
Poi verranno eseguite tutte le altre istruzioni comprese nella macro.
Ora ti mostro come ho modificato:
La prima macro
Codice: Non sei autorizzato a vedere i links. Registrati o Login
Sub leggi_con_filtro_bis()
Dim Percorso, Riga, Colonna, Ext
Dim NomeFile, QuestoFile, Anno
Columns("A:G").ClearContents
QuestoFile = ActiveWorkbook.Name
Ext = "xls"
Anno = InputBox("IMMETTERE L'ANNO DEL PROGETTO DI NOTULA DA RICERCARE", "          Ricerca Progetto di Notula")
Range("H1") = Anno
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno & "\"
Colonna = 1
If Left(Ext, 1) <> "*" Then
    Ext = "*." & Ext
End If
If Right(Percorso, 1) <> "\" Then
    Percorso = Percorso & "\"
End If
NomeFile = Dir(Percorso & Ext)
Do While NomeFile <> ""
    If NomeFile <> QuestoFile Then
    Riga = Riga + 1
    Cells(Riga, Colonna) = NomeFile
    End If
    NomeFile = Dir()
Loop
Range("A1").Select
End Sub
Questa la seconda macro riveduta e corretta
Codice: Non sei autorizzato a vedere i links. Registrati o Login
Sub Notula_full()
Dim MioNome As String
Dim Percorso, Anno
Dim Fileorigine As String
Dim FileorigineComplete
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim intervallo As Range
Dim uColonna, uRiga, R, C
'   si controlla se la cella contenga un valore
Anno = Range("H1")
Percorso = "C:\contabilità\" & Anno & "\" & "PROGETTI " & Anno & "\"
MioNome = ActiveWorkbook.Name
If ActiveCell = "" Then
    MsgBox "Scegliere una cella cove è indicato un file"
    Exit Sub
End If
Fileorigine = ActiveCell.Value
FileorigineComplete = Percorso & Fileorigine
'   si controlla che il file da aprire esista
If Dir(FileorigineComplete) = "" Then
    MsgBox "impossibile trovare il file"
    Exit Sub
End If
'   viene richiamata un'altra applicazione Excel
Application.EnableEvents = False
Set xlApp = Excel.Application
'   viene aperto il file di origine dati e selezionato il foglio Fattura
Set xlBook = xlApp.Workbooks.Open(FileorigineComplete)
Worksheets("Fattura").Select
If MsgBox("Trasformare il progetto in NOTULA ?", vbYesNo) = vbNo Then
    Workbooks(Fileorigine).Close
    Exit Sub
End If
'   viene copiato l'intervallo "B2:H65"
Range("B2:H65").Select
Selection.Copy
'   viene attivata la cartella di lavoro principale ed il foglio Xnotule
Windows(MioNome).Activate
Worksheets("Xnotule").Select
'   vengono incollati i dati prima copiati nell'intervallo "B2:H65"
Range("B2:H65").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'   fine dei lavori
Worksheets("start").Select
Application.EnableEvents = True
Workbooks(Fileorigine).Close
End Sub

Ho dato alle macro nomi differenti da quelli usati prima, quindi puoi inserirli tranquillamente nello stesso modulo dello stesso progetto o, per maggior chiarezza in un nuovo modulo.
Per i miei test ho creato due cartelle:
2013 con la sottocartella PROGETTI 2013
2014 xon la sottocartella PROGETTI 2014

A me funziona, così come funzionava la prima coppia di macro.

Come il solito fammi sapere   :ciao:
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Ottobre 01, 2013, 18:40:32
Ciao micdas,
ho provato le due ultime versioni e funzionano benissimo, ma nache quelle precedenti fatte da me al riavvio del programma non davano più l'errore di interruzione.
In effetti, la variabile pubblica la devi inzializzare in qualche modo e la seconda macro senza la prima non avrebbe funzionato.
Ora ti pongo un'altro problema.
Quando ricarico da Start (ma lo faceva anche prima) un progetto, mi segnala che ci sono dei nomi che sono doppi e mi chiede se voglio utilizzare il precedente e devo rispondere sì pena l'interruzione.
Poi al riavvio mi dice che ci sono dei collegamenti che non vanno.
La domanda è:
C'è modo di ripulire il file che viene salvato anche da questi oltre che dal codice Vb ?
Grazie.
Tullio
  :resistere:
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Ottobre 02, 2013, 18:52:06
Ciao micdas,
le tue sub funzionano a dovere, grazie ancora.
Ora vorrei insieme a te risolvere il problema del quale ti avevo accennato in precedenza.
I progetti li salvo .xls con una routine che elimina il codice vb, e in effetti macro non ce ne sono, però noto che le formule sono rimaste tutte e in alcuni file salvati sono rimasti dei "collegamenti" usati tempo indietro e qualcuno addirittura senza una logica, ha per esempio come origine il nome di un progetto salvato.
Potrei eliminare anche le formule, i nomi, e i collegamenti?
Praticamente salvare una copia del famoso Range("B2:C65") così come appare ?
Grazie in anticipo.
Tullio
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Ottobre 03, 2013, 13:04:16
Non mi sono mai trovato in questa situazione.
Salvando un foglio di lavoro generato tramite collegamenti esterni si salvano anche questi collegamenti.
Un foglio così salvato è praticamente inutilizzabile se i collegamenti non possono essere ripristinati.
Secondo me un metodo che si potrebbe seguire è quello di salvare il lavoro in altro file.
eseguire copia => incolla speciale => valori
poi salvare il foglio così modificato
I collegamenti esterni non dovrebbero dare più fastidio
Titolo: Re:macro funge con F8 no con F5
Inserito da: Tullio - Ottobre 04, 2013, 08:23:34
Buongiorno Michele,
 :n045:
stamani ho aperto gli occhi con in mente "convalida dati".
Dopo una cancellazione di convalida mi era rimasta nel foglio Fattura una cella con la convalida dati attiva, questo portava gli errori che ti dicevo.
Ho corretto il foglio e ora devo ripassare tutti i Progetti già fatti per eliminarla anche da lì.
Ne avrei un'altra posso approfittare?
Quando chiudo l'applicazione mi rimane aperto una sessione vuota. Vorrei che così non fosse, ti devo postare le routine di apertura e chiusura o non serve?
Grazie in anticipo,
Tullio
Titolo: Re:macro funge con F8 no con F5
Inserito da: micdas - Ottobre 04, 2013, 19:45:16
Sono contento che hai risolto.
Per il nuovo problema è meglio aprire un altro topic   :ciao: