Puoi usare una macro di WorksheetChange:
Sul modulo vba di Foglio2 di Programma.xlsm (il file deve essere "macro enabled", quindi xlsm), inserisci questo codice:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TGWb As Workbook, Desh As String, bPath As String
'
Desh = "Foglio10" '<<< Su quale foglio caricare i risultati
bPath = ThisWorkbook.Path '<<< Se i file sono invece altrove, mettere il Percorso
'
If Target.Address = "$A$1" Then
On Error Resume Next
Set TGWb = Workbooks.Open(Filename:=bPath & "\" & Range("A1").Value, ReadOnly:=True)
If Err.Number <> 0 Or TGWb Is Nothing Then
MsgBox (bPath & "\" & Range("A1").Value & vbCrLf _
& "Il file non e' stato aperto correttamente")
TGWb.Close , False
Exit Sub
End If
On Error GoTo 0
ThisWorkbook.Sheets(Desh).Cells.ClearContents
Call GetFrom(TGWb)
Application.EnableEvents = False
ThisWorkbook.Sheets(Desh).Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
TGWb.Close , False
Application.EnableEvents = True
End If
End Sub
(per inserire il codice nella posizione giusta: tasto dx sul tab col nome foglio Foglio2, scegli Visualizza codice)
Le righe marcate <<< devono essere personalizzate come da commento
In un Modulo standard del vba di Programma.xlsm metti invece:
- Codice: Seleziona tutto
Sub GetFrom(TGBw As Workbook)
With TGBw.Sheets("Foglio1")
.Range(.Range("A1"), .UsedRange).Copy
End With
End Sub
Poi scrivi in A1 di Foglio2 un nome file e vedi che succede
Ho detto "scrivi in A1 di Foglio2 un nome file" e non "scrivi un nome e cognome" perche' non hai detto come, nel tuo standard, Nome+Cognome diventano poi nome file