giorno settimanamesegiorno

Sono passati 88 giorni dall'inizio dell'anno che corrispondono a 13 settimane

Arcobaleno, domani sereno



* Chattina

Aggiorna Storia
  • mar: :resistere:
    Febbraio 15, 2022, 19:44:48
  • mar: Non mi ricordavo di essere un global moderator wauuuu Ok Prof ti lascio restaurare in pace!
    Febbraio 15, 2022, 19:43:56
  • mar: :Cartelli70:
    Febbraio 15, 2022, 19:41:14
  • mar: ad cazzum pure qui?
    Febbraio 15, 2022, 19:41:02
  • mar: ciaoooo sono in perlistrazione
    Febbraio 15, 2022, 19:40:44
  • mar: :okkey:
    Febbraio 15, 2022, 19:40:20
  • Loretta/Nina: ciao a tutti
    Ottobre 04, 2021, 19:23:02
  • Loretta/Nina: :tuffarsi:
    Settembre 21, 2021, 07:08:03
  • Loretta/Nina: Buon autunno a tutti
    Settembre 21, 2021, 07:01:35
  • nuvolotta: avventure testuali
    Luglio 06, 2020, 23:26:08
  • _jan_: ...gli ultimo però....!!
    Gennaio 14, 2019, 14:45:09
  • _jan_: vedi gli ultimi post in fondo.
    Novembre 24, 2018, 19:10:00
  • mar: Trovato :Amm9:
    Novembre 24, 2018, 18:57:51
  • mar: Chi cerca trova non vi trovo! :Cartelli2:
    Novembre 24, 2018, 18:57:05
  • mar: Vado a vedere le cartoline!
    Novembre 24, 2018, 18:52:38
  • mar: :Amore145:
    Novembre 24, 2018, 18:52:21
  • mar: :Amore178:
    Novembre 24, 2018, 18:52:07
  • _jan_: Welcome Visitor.  :Party133:
    Novembre 15, 2018, 10:03:24
  • Loretta/Nina: Benvenuto ligi  :Cartelli37:
    Ottobre 09, 2018, 13:19:25
  • nuvolotta: Cucù...  :Amore20:
    Settembre 16, 2018, 01:16:47
  • Loretta/Nina: :Party133:
    Settembre 01, 2018, 17:05:30
  • _jan_: Ciao ai visitors!!
    Settembre 01, 2018, 17:02:31
  • Loretta/Nina: :fischio: :979:
    Agosto 28, 2018, 16:20:48
  • ketty: ah beh, meno male. ora il tempo e' un po' brutto
    Agosto 26, 2018, 13:27:36
  • _jan_: No, no, soqquà. Ci passo ma....... non c'è mai nessuno. Ammiro Nuvolotta, solitaria e presente.
    Agosto 25, 2018, 10:34:41
  • ketty: ma Jan è andato in vacanza? :Cartelli70:
    Agosto 24, 2018, 20:51:59
  • ketty: ciao a tutti.
    Agosto 24, 2018, 20:50:12
  • nuvolotta: :faccina_fiore: ciao ragazzioli/ole...
    Agosto 19, 2018, 23:03:49
  • Loretta/Nina: :ciao: :Party133:
    Agosto 19, 2018, 20:24:28
  • _jan_: :Felici13:
    Agosto 04, 2018, 15:30:40
  • nuvolotta: Ferie... già fatte....
    Agosto 04, 2018, 09:54:58
  • _jan_: Auguri di buon onomastico a tutti gli Alfonso....
    Agosto 01, 2018, 11:10:21
  • _jan_: chiusp per ferie?
    Luglio 30, 2018, 19:50:58
  • _jan_: Buon onomastico a Donatella Seconda........ e la prima? :Shok145:
    Luglio 30, 2018, 06:59:38
  • _jan_: Buon onomastico a tutte le Marta.  :Amore20:
    Luglio 29, 2018, 07:44:31
  • _jan_: Ci sono altre nuove iscritte viste il 26 luglio 2018..... (mica saranno monache)....  :approva:
    Luglio 26, 2018, 18:39:04
  • _jan_: Oggi, 26 luglio 2018, abbiamo una nuova iscritta "Francesca".....Benvenuta Francesca.  :Party133:
    Luglio 26, 2018, 15:49:24
  • _jan_: Buon onomastico anche a tutte le Anna!!! .....
    Luglio 26, 2018, 10:30:21
  • _jan_: Auguri di Buon Onomastico a TUO..... (ogni giorno, credo)..... :sm269:
    Luglio 26, 2018, 10:28:52
  • ketty: ma.... quando è il tuo?
    Luglio 25, 2018, 19:52:19

* Emoticon aggiuntive e link al portale


Autore Topic: macro funge con F8 no con F5  (Letto 6130 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Tullio

  • Visitatore
macro funge con F8 no con F5
« il: 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

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #1 il: 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:
E' stupido pensare di non aver bisogno degli altri

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #2 il: 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.

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #3 il: 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:
« Ultima modifica: Settembre 29, 2013, 18:21:43 da Tullio »

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #4 il: 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:
E' stupido pensare di non aver bisogno degli altri

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #5 il: 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:
E' stupido pensare di non aver bisogno degli altri

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #6 il: 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

« Ultima modifica: Settembre 30, 2013, 18:08:55 da Tullio »

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #7 il: 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:
E' stupido pensare di non aver bisogno degli altri

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #8 il: 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.

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #9 il: 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.


Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #10 il: 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

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #11 il: 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:
« Ultima modifica: Ottobre 01, 2013, 14:41:51 da micdas »
E' stupido pensare di non aver bisogno degli altri

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #12 il: 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
« Ultima modifica: Ottobre 01, 2013, 16:14:23 da Tullio »

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #13 il: 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:
E' stupido pensare di non aver bisogno degli altri

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #14 il: 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:

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #15 il: 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

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #16 il: 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
E' stupido pensare di non aver bisogno degli altri

Tullio

  • Visitatore
Re:macro funge con F8 no con F5
« Risposta #17 il: 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

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:macro funge con F8 no con F5
« Risposta #18 il: Ottobre 04, 2013, 19:45:16 »
Sono contento che hai risolto.
Per il nuovo problema è meglio aprire un altro topic   :ciao:
E' stupido pensare di non aver bisogno degli altri