我已经针对应用程序运行时出现在任务栏上的图标执行了此操作。现在我尝试为Windows上的快捷图标或应用程序图标执行此操作(在查看所有Windows程序/应用程序时看到的图标。)
我已经读过这可以使用.dll文件完成,但我对此并不感兴趣。
我的直觉是,这实际上不可能与.mdb中的VBA有关。希望我错了。寻找有关可能解决方案的讨论。
感谢。
答案 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