Click to See Complete Forum and Search --> : Create a desktop shortcut


JoeTaylor
August 23rd, 2001, 10:15 AM
Hi,

Does anyone know how to create a desktop shortcut to a file using VBA? I need to be able to control the target string from within VBA aswell.

Thanks,

Joe Taylor

berta
August 23rd, 2001, 10:27 AM
Try with Wscript.Shell object

Dim WshShell
Set WshShell = CreateObject("Wscript.Shell")
Set oShellLink = WshShell.CreateShortcut("c:\mylink.lnk")
oShellLink.TargetPath = "c:\myfile.txt" 'U must specify the absolute path
oShellLink.Save

For create shourtcut on desktop U must use API to get Desktop folder.

hi, brt

Iouri
August 23rd, 2001, 11:04 AM
Example from MS

' This sample demonstrates how to use the WSHShell object to create a shortcut
' on the desktop.

L_Welcome_MsgBox_Message_Text = "This script will create a shortcut to Notepad on your desktop."
L_Welcome_MsgBox_Title_Text = "Windows Scripting Host Sample"
Call Welcome()

' ********************************************************************************
' *
' * Shortcut related methods.
' *

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")


Dim MyShortcut, MyDesktop, DesktopPath

' Read desktop path using WshSpecialFolders object
DesktopPath = WSHShell.SpecialFolders("Desktop")

' Create a shortcut object on the desktop
Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & "\Shortcut to notepad.lnk")

' Set shortcut object properties and save it
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\notepad.exe")
MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%")
MyShortcut.WindowStyle = 4
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\notepad.exe, 0")
MyShortcut.Save

WScript.Echo "A shortcut to Notepad now exists on your Desktop."

' ********************************************************************************
' *
' * Welcome
' *
Sub Welcome()
Dim intDoIt

intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _
vbOKCancel + vbInformation, _
L_Welcome_MsgBox_Title_Text )
If intDoIt = vbCancel Then
WScript.Quit
End If
End Sub


Iouri Boutchkine
iouri@hotsheet.com