Walter ha la necessità di aprire sempre una particolare cartella di lavoro di Excel nella stessa posizione sullo schermo e con una particolare dimensione della finestra. Si chiede se esiste un modo per fare in modo che Excel ricordi questa posizione e le informazioni sulle dimensioni alla chiusura della cartella di lavoro in modo che venga utilizzato alla successiva apertura della stessa cartella di lavoro.

Una soluzione relativamente semplice consiste nel posizionare la cartella di lavoro (o, spesso, le cartelle di lavoro) come desideri sullo schermo e quindi salvare le cartelle di lavoro come area di lavoro. A tale scopo, visualizzare la scheda Visualizza della barra multifunzione e fare clic sullo strumento Salva area di lavoro. Va notato, tuttavia, che questo approccio funziona solo in Excel 2007 ed Excel 2010: la possibilità di creare aree di lavoro è stata rimossa da Excel 2013, sebbene sia ancora possibile aprirli.

Per una soluzione che funzioni in tutte le versioni moderne di Excel dovrai utilizzare una macro. Puoi impostare una macro che viene eseguita automaticamente quando chiudi la cartella di lavoro e un’altra che viene eseguita quando la apri. Quello che viene eseguito alla chiusura può salvare le informazioni sul posizionamento, quindi quello che viene eseguito quando si apre può recuperare tali informazioni e utilizzarle per individuare la posizione in cui deve essere visualizzata la cartella di lavoro.

La domanda, tuttavia, è dove salvare le informazioni sul posizionamento. Una soluzione è semplicemente scriverlo in un file di testo nella stessa cartella in cui è archiviata la cartella di lavoro. Questo è l’approccio adottato nella seguente coppia di macro.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim fileName As String     Dim myWindow As Window

Set myWindow = ActiveWindow     fileName = "config.txt"

Open fileName For Output As #1     With myWindow         Write #1, .Top         Write #1, .Left         Write #1, .Height         Write #1, .Width     End With     Close #1 End Sub
Private Sub Workbook_Open()

Dim inputStr As String     Dim fileName As String     Dim myWindow As Window

Set myWindow = ActiveWindow     fileName = "config.txt"

If Dir(fileName) <> "" Then         Open fileName For Input As #1         With myWindow             .WindowState = xlNormal             Line Input #1, inputStr             .Top = inputStr             Line Input #1, inputStr             .Left = inputStr             Line Input #1, inputStr             .Height = inputStr             Line Input #1, inputStr             .Width = inputStr         End With         Close #1     End If End Sub

La macro che viene eseguita alla chiusura della cartella di lavoro salva le quattro posizioni di posizionamento (.Top, .Left, .Height e .Width) in un file denominato config.txt. Questo file viene quindi letto alla successiva apertura della cartella di lavoro e vengono impostate le proprietà appropriate per la finestra della cartella di lavoro.

Se il file config.txt manca per qualche motivo, la cartella di lavoro si apre nella posizione predefinita.

Questo approccio funziona alla grande se nella cartella è presente un’unica cartella di lavoro che utilizza le informazioni sul posizionamento. Se ne hai più di uno, ognuno sovrascriverà il file config.txt e probabilmente ti ritroverai con le cartelle di lavoro non aperte dove volevi.

Per alcune persone, un approccio migliore potrebbe essere quello di memorizzare le posizioni di posizionamento nella cartella di lavoro stessa, in riferimenti con nome. Questo è l’approccio adottato nelle seguenti macro.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next     With ThisWorkbook         With .Names             .Add Name:="WinTop", RefersToR1C1:="=1"

.Add Name:="WinLeft", RefersToR1C1:="=1"

.Add Name:="WinWidth", RefersToR1C1:="=1"

.Add Name:="WinHeight", RefersToR1C1:="=1"

End With         On Error GoTo 0         .Names("WinTop").RefersTo = ActiveWindow.Top         .Names("WinLeft").RefersTo = ActiveWindow.Left         .Names("WinWidth").RefersTo = ActiveWindow.Width         .Names("WinHeight").RefersTo = ActiveWindow.Height     End With End Sub
Private Sub Workbook_Open()

With ThisWorkbook         ActiveWindow.Top = Val(Mid(.Names("WinTop").RefersTo, 2))

ActiveWindow.Left = Val(Mid(.Names("WinLeft").RefersTo, 2))

ActiveWindow.Width = Val(Mid(.Names("WinWidth").RefersTo, 2))

ActiveWindow.Height = Val(Mid(.Names("WinHeight").RefersTo, 2))

End With End Sub

Con questo approccio puoi trasferire facilmente la cartella di lavoro ovunque tu voglia e le macro si occupano di salvare e riutilizzare le informazioni di posizionamento per la finestra della cartella di lavoro.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (10091) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.