Dopo un piccolo intervento a un occhio in questi giorni sono stato poco al pc, e nei prossimi giorni i postumi dell'intervento piu' impegni familiari "di stagione" mi terranno ancora lontano.
Quindi ti metto a disposizione quello che ho preparato, anche se incompleto.
Questo include:
1) il seguente codice da inserire all'interno del tuo Personal.xlsm. Se non hai un Personal, lo puoi creare avviando e fermando subito la registrazione di una nuova macro e facendo la scelta "Memorizza macro in: Cartella macro personale"; ti ritroverai cosi' nel vba un "VbaProject (Personal.xlsm)"
a) Questa va in un Modulo Standard:
- Codice: Seleziona tutto
Sub NewXL()
Dim XlApp As Object, DirDocs As String, CkF
'
Set wshshell = CreateObject("WScript.Shell")
DirDocs = wshshell.SpecialFolders("MyDocuments")
Set wshshell = Nothing
CkF = FileStatus(DirDocs & "\4WnG_ADD-FAVORITE.xlsm")
If CkF = 0 Then
Set XlApp = CreateObject("Excel.Application")
XlApp.Visible = True
XlApp.WindowState = xlNormal
XlApp.Width = 200
XlApp.Height = 200
XlApp.Workbooks.Open (DirDocs & "\4WnG_ADD-FAVORITE.xlsm")
End If
End Sub
Function FileStatus(filename As String) As Variant
'Check file status; codice di ritorno:
'0=file libero, 70=file occupato, 53=file non esiste
'76=path non esiste
'altri errori: da indagare
'
Dim filenum As Integer, errnum As Integer
'
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
FileStatus = errnum
End Function
b) Questo va in ThisWorkbook:
- Codice: Seleziona tutto
Private Sub Workbook_Open()
Call NewXL
End Sub
2) Un file 4WnG_ADD-FAVORITE.xlsm da inserire
nella tua cartella Documenti, che puoi scaricare qui:
https://www.dropbox.com/s/6vs22mrl7veo4 ... .xlsm?dl=0All'apertura di Excel (vedi codice inserito in Personal-ThisWorkbook) verra' creata una nuova instanza di Excel e al suo interno sara' aperto il file 4WnG_ADD-FAVORITE.xlsm.
La seconda instanza di Excel lavorera' in una finestra di piccole dimensioni, che sara' subito coperta da una form che ha questo aspetto:
free image upload-nel TextBox saranno elencati eventuali Link preferiti aggiunti con questa procedura
-il tasto Nuovo Link consente di aggiungere un link; se pero' sono gia' presenti dei link il nuovo link sara' inserito solo previa cancellazione del link precedente.
-il tasto Cancella link elimina il link inserito
-il tasto Refresh Elenco in realta' e' superfluo perche' l'elenco nel TextBox viene aggiornato a ogni cambiamento.
-il tasto Nascondi dovrebbe nascondere la sessione Excel di cui parliamo e restituire il focus all'applicazione Excel principale, ma per ora non funziona e (per quanto detto in preambolo) sicuramente non funzionera' per parecchi giorni e non e' detto che lo realizzeremo (vedi "postambolo", piu' in avanti).
-il tasto Cancella tutti i link a chiudi e' la chiusura del lavoro: salvataggio del file, chiusura della sessione Excel.
I link inseriti in questo modo saranno preceduti dal prefisso "AA_", ed e' questa la chiave usata per individuale i link personali inseriti.
Quando un nuovo link viene inserito, in Foglio1 del file viene creata una riga col nome del Link e l'orario di apertura. Alla sua chiusura verra' aggiunta l'ora di rimozione e il tempo di permanenza (visualizzato come hh:mm). Il file contiene un tot di record che sono stati generati durante il collaudo.
Operativamente al momento tocca a te individuare e attivare la sessione XL principale per fare il tuo lavoro, come pure tornare alla seconda sessione XL per terminare i link ed eventualmente inserirne uno nuovo.
Credo che questo sia l'80% di quanto richiesto; non so se il rimanente 20% saro' in grado di realizzarlo, anche perche' mi viene il dubbio che lo stesso risultato si potrebbe ottenere lavorando con icone posizionate sulla Quick Access Bar, o tramite una scheda personalizzata da aggiungere sulla barra multifunzione, lasciando tutto il codice e la userform all'interno di Personal. Ti chiedo di fare una pensata su queste ultime ipotesi.
Ciao