View Full Version : Solved: Not understanding Custom Icon Macro

07-21-2011, 01:57 PM
I have a question about the macro located here:

My icon files live at this location:

How do I change the macro so it grabs the icon I want from that path instead of the path where the workbook originates?

07-21-2011, 02:02 PM
Change the IconLocation in this bit:

' Link it to this file
With oShortcut
.TargetPath = szBookFullName
.IconLocation = szPath & szIconName
End With

07-21-2011, 02:09 PM
Okay, got it working now. Thanks for the help. Here's the way the final macro worked out in case anybody else wants to see it:
Option Explicit

Sub CreateDesktopShortcut()
' =================================================================
' Create a custom icon shortcut on the users desktop
' =================================================================

' Msgbox string variables
Dim szMsg As String
Dim szStyle As String
Dim szTitle As String

' Change here for the icon's name
Const szIconName As String = "\1251139182_Positive.ico"

' Constant string values, you can replace "Desktop"
' with any Special Folders name to create the shortcut there
Const szlocation As String = "Desktop"
Const szLinkExt As String = ".lnk"

' Object variables
Dim oWsh As Object
Dim oShortcut As Object

' String variables
Dim szSep As String
Dim szBookName As String
Dim szBookFullName As String
Dim szPath As String
Dim szDesktopPath As String
Dim szShortcut As String

' Initialize variables
szSep = Application.PathSeparator
szBookName = szSep & ThisWorkbook.Name
szBookFullName = ThisWorkbook.FullName
szPath = ThisWorkbook.Path

On Error GoTo ErrHandle
' The WScript.Shell object provides functions to read system
' information and environment variables, work with the registry
' and manage shortcuts
Set oWsh = CreateObject("WScript.Shell")
szDesktopPath = oWsh.SpecialFolders(szlocation)

' Get the path where the shortcut will be located
szShortcut = szDesktopPath & szBookName & szLinkExt

' Make it happen
Set oShortcut = oWsh.CreateShortCut(szShortcut)

' Link it to this file
With oShortcut
.TargetPath = szBookFullName
.IconLocation = "C:\Personal\icons" & szIconName 'szPath & szIconName
End With

' Explicitly clear memory
Set oWsh = Nothing
Set oShortcut = Nothing

' Let the user know it was created ok
szMsg = "Shortcut was created successfully"
szStyle = 0
szTitle = "Success!"
MsgBox szMsg, szStyle, szTitle

Exit Sub

' or if it wasn't
szMsg = "Shortcut could not be created"
szStyle = 48
szTitle = "Error!"

MsgBox szMsg, szStyle, szTitle
End Sub

Bob Phillips
07-21-2011, 02:12 PM
You should have changed this

szPath = ThisWorkbook.Path


szPath = "C:\Personal\icons"