如何以编程方式将.ico文件分配给Access数据库的桌面快捷方式

时间:2016-09-19 23:12:28

标签: vba ms-access

我已经针对应用程序运行时出现在任务栏上的图标执行了此操作。现在我尝试为Windows上的快捷图标或应用程序图标执行此操作(在查看所有Windows程序/应用程序时看到的图标。)

我已经读过这可以使用.dll文件完成,但我对此并不感兴趣。

我的直觉是,这实际上不可能与.mdb中的VBA有关。希望我错了。寻找有关可能解决方案的讨论。

感谢。

2 个答案:

答案 0 :(得分:2)

Windows快捷方式可以并且可以为该快捷方式指定ico文件。虽然"经常"他们指向.exe的快捷方式,快捷方式拉出.exe的ico contined INSIDE,OFTEN你可以指定快捷方式的ico。并且因为在所有情况下,您的快捷方式实际上将指向msaccess.exe,然后您必须创建一个指定了ico的自定义快捷方式。您甚至可以手动构建快捷方式,指定ico,然后只使用VBA将该快捷方式复制到桌面(假设您的应用程序的路径名始终相同 - 通常不会 - 如果路径名将从用户更改为用户,然后安装程序是解决此问题的唯一实用方法。)

我不确定您是否可以在VBA中设置/创建快捷方式,但我建议您采用Windows安装程序(或像Inno这样的免费安装程序)。这些安装程序将在桌面上创建快捷方式,并允许您指定图标。

可在此处找到一个免费且受欢迎的安装程序(inno):

http://www.jrsoftware.org/isinfo.php

通过VBA代码和Access在桌面上设置图标和快捷方式毫无意义,因为用户首先还没有运行应用程序/ VBA代码来设置快捷方式!因此,请使用安装程序。

答案 1 :(得分:2)

如果您正在寻找一种从VBA创建快捷方式的方法,您可以使用WshShell对象的CreateShortcut方法,例如,

Option Compare Database
Option Explicit

Sub CreateDesktopShortcutWithIcon()
    ' ref - https://msdn.microsoft.com/en-us/library/xsy6k3ys(v=vs.84).aspx
    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    Dim strDesktop As String
    strDesktop = WshShell.SpecialFolders("Desktop")
    Dim oShellLink As Object
    Set oShellLink = WshShell.CreateShortcut(strDesktop & "\My Shortcut.lnk")
    oShellLink.TargetPath = "C:\Users\Public\UCanAccessTest.accdb"
    oShellLink.WindowStyle = 1
    'oShellLink.Hotkey = "Ctrl+Alt+f"
    'oShellLink.IconLocation = "notepad.exe, 0"  ' for embedded icon
    oShellLink.IconLocation = "C:\__tmp\MIME\foo.ico"  ' for .ico file
    oShellLink.Description = "My shortcut created by VBA"
    oShellLink.WorkingDirectory = strDesktop
    'oShellLink.Arguments = "C:\myFile.txt"
    oShellLink.Save
End Sub