Excel – Windows 7任务栏进度

运行Excel 2010,我可以肯定总是在这个版本上运行这些表单,因为它只能在我工作的terminal计算机上进行本地访问。

我通过excel运行一些导入过程和大文件夹过滤/打印批处理function。 我想在我的function处理过程中使用Windows 7任务栏进度条视觉效果,给出他们走多远的想法。 考虑与其他视觉效果进行展示,但这(如果可能的话)似乎是最明显和专业的风格。

我一直在努力尝试做这个工作,无济于事。 我的理解到目前为止,我需要实现Windows API中常见的ITaskbarList3接口。 从代码中我发现了如何使其工作,一旦实现,其余的看起来相当简单和不言自明。

我完全限于使用Excel作为代码的基础,在工作计算机上没有安装权限。 我可以在家安装任何必要的文件,然后转移它们。 乐于使用任何广泛的或真正的倒退的方式来结束,作为结束certificate无论什么手段。

使用Excel状态栏会容易得多:

Application.StatusBar =“显示进度到用户…”;


对于Windows和任务栏进度条,您需要下载Windows 7任务栏:开发人员资源 。

您需要打开示例解决scheme,右键单击Windows7.DesktopIntegration项目>属性>生成>勾选注册COM。

在开发过程中,通过在IDE中检查“注册COM互操作”选项,IDE将与/ codebase选项一起调用目标程序集上的regasm。

这将导致regasm.exe为您的程序集导出的COM可见类添加以下registry项:

HKEY_CLASSES_ROOT \ CLSID {XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX} \ InprocServer32的\基本代码=

这将使CLR能够按照组装path定位组件。 没有代码库path,CLR将不得不使用标准searchalgorithm来定位程序集(及其依赖项)。

下一步构build解决scheme>转到bin文件夹的Windows7.DesktopIntegration项目,并将Windows7.DesktopIntegration.DLL和Windows7.DesktopIntegration.TLB复制到System32文件夹或更好地注册到GAC。

一种帮助CLR查找所需程序集的相关技术是将所有程序集(及其依赖项)复制到与客户机应用程序本身相同的文件夹中。 但是,您的案例中的客户端应用程序将是Excel。 这意味着您必须将程序集复制到与Excel应用程序相同的文件夹中(不是一个好主意)。

一旦你能够实例化Windows7.DesktopIntegration DLL,你应该可以调用Windows7Taskbar.SetProgressValue方法,例如VBA代码:

 Set Windows7Taskbar = CreateObject("Windows7.DesktopIntegration") Windows7Taskbar.SetProgressState(form.Handle, Windows7Taskbar.ThumbnailProgressState.Normal) Windows7Taskbar.SetProgressValue(form.Handle, progress, maximum)