Via een Macro snelkoppeling maken en/of verwijderen

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
554
Is het mogelijk om , via een macro , een snelkoppeling van het bureaublad te verwijderen en een nieuwe te plaatsen.

Jaap
 
Dit is een voorbeeld zonder echte error trapping. Het maak een snelkoppeling op je bureaublad naar je huidige document en als deze al bestaat wordt hij eerst verwijderd.
Code:
Sub CreateShortCut()
    Dim oWSH As Object
    Dim oShortcut As Object
    Dim sPathDeskTop As String
    Dim sShortcut As String

    Set oWSH = CreateObject("WScript.Shell")
    sPathDeskTop = oWSH.SpecialFolders("Desktop")

    sShortcut = sPathDeskTop & "\" & ActiveWorkbook.Name & ".lnk"
    If Dir(sShortcut) <> "" Then
        Kill sShortcut
    End If
    
    Set oShortcut = oWSH.CreateShortCut(sPathDeskTop & "\" & _
        ActiveWorkbook.Name & "lnk")
        
    With oShortcut
        .TargetPath = ActiveWorkbook.FullName
        .Save
    End With
    Set oWSH = Nothing
End Sub
 
Hier wat aanvullende info

Onderstaande code 1 , verplaatst de oude map naar een map "Alle Kasbladen Amstelveen"
Van deze oude map map staat dan nog een snelkoppeling op het bureaublad welke ik wil verwijderen.

Daarne , code 2 , maakt een nieuwe map "Kasbladen Amstelveen 2016" .
Van deze nieuwe map wil ik dan weer een snelkoppeling hebben op het bureaublad.

Dus onderstaande moet uitgebreid worden met het verwijderen van snelkoppeling "Kasbladen Amstelveen 2015" (is Range J4)
en het aanmaken van een nieuwe snelkoppeling "Kasbladen Amstelveen 2016 (is Range J4 + 1)



Sub NieuwJaarN()

1 Name "C:\Users\Gebruiker\Documents\Kasbladen Amstelveen" & " " & Range("J4") As _
"C:\Users\Public\Documents\Alle Kasbladen Amstelveen\Kasbladen Amstelveen" & " " & Range("J4")
2 MkDir "C:\Users\Gebruiker\Documents\Kasbladen Amstelveen" & " " & Range("J4").Value + 1

End Sub

Vriendelijke groet Jaap
 
Laatst bewerkt:
Alles wat je wilt staat duidelijk in het voorbeeld naar mijn mening.
 
Beste Edmoor,

Kan de code moeilijk begrijpen.
Graag wat meer uitleg.
Wat doet wat?
Ik wil er wat van leren.
Waar moet ik bv. de mapnamen invullen?

Vriendelijke groet Jaap
 
Bij deze dezelfde code maar dan gedocumenteerd:
Code:
    Dim oShortcut As Object     'Een Shortcut (snelkoppeling) object
    Dim sPathDeskTop As String  'Pad naar het bureaublad
    Dim sShortcut As String     'Naam van de snelkoppeling

    'Maak het WScript object
    Set oWSH = CreateObject("WScript.Shell")
    
    'Bepaal het pad naar het bureaublad
    sPathDeskTop = oWSH.SpecialFolders("Desktop")

    'Bepaal de naam van de oude snelkoppeling
    sShortcut = sPathDeskTop & "\" & ActiveWorkbook.Name & ".lnk"
    'Als deze bestaat
    If Dir(sShortcut) <> "" Then
        'Verwijder deze dan
        Kill sShortcut
    End If
    
    'Maak een Shortcut (snelkoppeling) object
    'De naam van de nieuwe snelkoppeling wordt hier als 1e parameter aan meegegeven
    Set oShortcut = oWSH.CreateShortCut(sPathDeskTop & "\" & _
        ActiveWorkbook.Name & "lnk")
        
    With oShortcut
                      'Naam van het nieuwe document inclusief het pad
        .TargetPath = ActiveWorkbook.FullName
        'Sla de nieuwe snelkoppeling op
        .Save
    End With
    
    'Het WScript object hebben we nu niet meer nodig
    Set oWSH = Nothing
End Sub

In VBA ziet dat er zo uit:
Shortcut.jpg
 
Laatst bewerkt:
Edmoor,

Bedankt voor de duidelijke uitleg en gedane moeite.
Ik denk dat ik er zo wel uitkom.
Alleen vandaag even geen tijd , ga lekker wandelen in de duinen.
Kom er nog op terug.

Vriendelijke groet , Jaap
 
Laatst bewerkt:
Edmoor,

Bedankt voor de duidelijke uitleg en gedane moeite.
Ik denk dat ik er zo wel uitkom.
Alleen vandaag even geen tijd , ga lekker wandelen in de duinen.
Kom er nog op terug.

Vriendelijke groet , Jaap
 
Mochten er toch nog vragen rijzen dan lees ik het wel.
Plezierige wandeling gewenst :)
 
Het is niet nodig een 'oude' snelkoppeling te verwijderen.
Je kunt met dezelfde methode - .CreateShortcut - (mirabile dictu) de eigenschap .targetpath wijzigen.

Maak de snelkoppeling 'overzicht' in het buroblad

Code:
Sub M_maak_snelkoppeling()
    With CreateObject("WScript.Shell")
        With .CreateShortcut(.specialfolders(4) & "\overzicht.lnk")
            .targetpath = "G:\OF\adressen.xls"
            .Save
        End With
    End With
End Sub

Wijzig deze snelkoppeling 'overzicht' in het buroblad

Code:
Sub M_wijzig_bestaande_snelkoppeling()
    With CreateObject("WScript.Shell")
        With .CreateShortcut(.specialfolders(4) & "\overzicht.lnk")
            .targetpath = "G:\OF\0_snb_test.xls"
            .Save
        End With
    End With
End Sub

NB. vermijd spaties in directory- en bestandsnamen.
 
Laatst bewerkt:
Edmoor,

Jou oplossing werkt goed.

Ik heb echter daarna de oplossing van snb toegepast en deze werkt ook goed.
Hij is echter een stuk korter als je eerst de "overzicht" Shortcut" heb aangemaakt op je bureaublad.
Een mooie oplossing.
Ik heb er weer wat van opgestoken.
Allebei heel erg bedankt.

Vriendelijke groet Jaap
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan