2016-09-19 73 views
1

我已经为应用程序运行时出现在任务栏上的图标执行此操作。现在,我正在尝试为Windows上的快捷方式图标或应用程序图标执行此操作(查看所有Windows程序/应用程序时看到的图标)。如何以编程方式将.ico文件分配给Access数据库的桌面快捷方式

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

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

谢谢。

+0

图标显示基于与该文件关联的应用程序延期。改变图标的​​目的是什么? – Comintern

+0

这是一个商业产品,我们更愿意使用我们的徽标而不是访问徽标。我们目前通过右键单击快捷方式并手动更改。我们正在寻找一个编程解决方案 –

+0

你见过这个吗? http://www.pcreview.co.uk/threads/change-icon-of-a-shortcut-with-vba.976596/ – OpiesDad

回答

2

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

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

一个自由和流行的安装程序(INNO)可以在这里找到:

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

通过VBA代码设置你的桌面上的图标和快捷键和访问没有什么意义,因为用户不会有尚未运行你的应用程序/ VBA代码来设置快捷方式!所以为此使用安装程序。

+0

谢谢。我会研究这个安装程序。偶然,你知道程序高级安装程序吗?我最近一直在使用它,它似乎有能力。对我来说,似乎安装程序是一个安装程序;对此并不多。有什么想法吗? –

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 
相关问题