PDA

View Full Version : Solved: Not understanding Custom Icon Macro



Jomili
07-21-2011, 01:57 PM
I have a question about the macro located here:
http://www.vbaexpress.com/kb/getarticle.php?kb_id=584

My icon files live at this location:
C:\Personal\icons

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

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

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

Jomili
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
.Save
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
ErrHandle:
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


to



szPath = "C:\Personal\icons"