per uno sviluppo ulteriore, riprendo un pezzo di un mio vecchio thread "Da formula a VBA" http://www.pc-facile.com/forum/viewtopic.php?f=26&t=108268&p=635665#p635665.
Partendo da:
Anthony47 ha scritto:In attesa di una soluzione piu' smart, torno al primo messaggio e propongo questa soluzione:
.........
B) .............
Ho diviso in due parti il relativo codice:
1) Una Sub Worksheet_Activate (da mettere ovviamente nel "modulo di classe" del foglio Produzione):
- Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Call AggPROD
End Sub
2) La macro che esegue realmente l'aggiornamento, da inserire in un Modulo Standard del vba:
- Codice: Seleziona tutto
Sub AggPROD()
Dim LastB As Long
'
With ThisWorkbook.Sheets("PRODUZIONE") '<<<
LastB = .Cells(.Rows.Count, "B").End(xlUp).Row
'Copia formule:
.Range("M2:P2").Copy .Range(.Range("M3"), .Range("M" & LastB))
'Copia valori:
.Range(.Range("M3"), .Range("P" & LastB)).Copy
.Range("M3").PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
Selection.Range("A1").Select
End Sub
Il motivo di questa complicazione e' che credo che avrai bisogno di lanciare la Sub AggPROD non solo all'attivazione del foglio Produzione ma anche in altre circostanze che non so individuare; il codice della Sub AggPROD potrebbe anche essere eseguito anche dall'interno di altri workbooks, sostituendo, in una "Sub AltraAggPROD" la riga
With ThisWorkbook.Sheets("PRODUZIONE") con
- Codice: Seleziona tutto
With Workbooks("NomeFile.xls").Sheets("PRODUZIONE")
Spero che quanto proposto sia di qualche utilita'
Ciao
Vorrei un aiuto sull'ultima parte dell'indicazione di Anthony.
In pratica avrei effettivamente la necessità di lanciare la macro da un file esterno e soprattutto vorrei che il riferimento del percorso fosse prelevato da una cella specifica.
Ipotizziamo che nel foglio "Tg" del file "master.xlsm" oltre al pulsante della macro "Sub AggPROD() ci sia anche in P3 il percorso: "U:\Progetti Excel\scarti\T09_MAGGIO_2017.xls
come cambia:
- Codice: Seleziona tutto
With Workbooks("T09_MAGGIO_2017.xls").Sheets("PRODUZIONE")
Spero di essere stato chiaro a sufficienza per aiutarmi.
Grazie
PS Aggiungo che il foglio "PRODUZIONE" è nascosto con pw e il file che lo contiene T09_MAGGIO_2017.xls è aperto x 24 ore al giorno per 5 gg.lavorativi.