Grazie Dylan, mi hai salvato...
La parte del progetto "Navigatore" da modificare e' questa:
- Codice: Seleziona tutto
'... (altro)
Else
myDir = lPath
End If
mySplit = Split(myDir, "\", , vbTextCompare)
If UBound(mySplit, 1) > 0 Then
Set WSShell = CreateObject("WScript.Shell")
LnkPAth = Environ("UserProfile") & "\Links\"
Set myLink = WSShell.CreateShortcut(LnkPAth & "AA_" & mySplit(UBound(mySplit)) & ".lnk")
myLink.TargetPath = myDir
myLink.Save
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = mySplit(UBound(mySplit))
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Value = Now
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Resize(1, 2).ClearContents
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 5).Value = myDir 'Log link path
Set WSShell = Nothing
End If
'... (altro codice)
Ci arriviamo con in myDir il percorso da inserire nei Preferiti (o Accesso rapido, o "Pinned path").
Col suggerimento di Dylan diventerebbe:
- Codice: Seleziona tutto
Else
myDir = lPath
End If
mySplit = Split(myDir, "\", , vbTextCompare)
'
If UBound(mySplit, 1) > 0 Then
' Set WSShell = CreateObject("WScript.Shell")
' LnkPAth = Environ("UserProfile") & "\Links\"
' Set myLink = WSShell.CreateShortcut(LnkPAth & "AA_" & mySplit(UBound(mySplit)) & ".lnk")
' myLink.TargetPath = myDir
' myLink.Save
CreateObject("Shell.Application").Namespace(myDir).Self.InvokeVerb ("pintohome")
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = mySplit(UBound(mySplit))
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Value = Now
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Resize(1, 2).ClearContents
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 5).Value = myDir 'Log link path
' Set WSShell = Nothing
End If
Le righe commentate sono quelle sostituite, quindi possono essere eliminate
Cosi' pero' funzionerebbe solo su Win 10 e non su Win 7
Se hai la necessita' di lavorare su ambienti variegati, possiamo osare una versione anfibia, del tipo:
- Codice: Seleziona tutto
Else
myDir = lPath
End If
mySplit = Split(myDir, "\", , vbTextCompare)
'
Dim OSi As Object, wVer As String 'MEGLIO SE IN TESTA ALLA SUB
'Cerco la versione di OS:
Set OSi = GetObject("winmgmts:").ExecQuery("Select * from Win32_OperatingSystem").Itemindex(0)
wVer = OSi.Caption
'
If UBound(mySplit, 1) > 0 Then
If InStr(1, wVer & " ", "Windows 10", vbTextCompare) = 0 Then
Set WSShell = CreateObject("WScript.Shell")
LnkPAth = Environ("UserProfile") & "\Links\"
Set myLink = WSShell.CreateShortcut(LnkPAth & "AA_" & mySplit(UBound(mySplit)) & ".lnk")
myLink.TargetPath = myDir
myLink.Save
Set WSShell = Nothing
Else
CreateObject("Shell.Application").Namespace(myDir).Self.InvokeVerb ("pintohome")
End If
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = mySplit(UBound(mySplit))
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Value = Now
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Resize(1, 2).ClearContents
Foglio1.Cells(Rows.Count, 1).End(xlUp).Offset(0, 5).Value = myDir 'Log link path
End If
Questa versione pero' non ho chance di verificarla, perche' per una serie di situazioni mi son trovato solo con Win 10 anche sulle macchine meno recenti
Ciao a tutti