如何从Microsoft Office 2007保存ImageMSO图标?

Sou*_*ter 8 icons vba office-2007

我从Microsoft Office 2007中发现了很多漂亮的图标.你有没有想过提取并使用VBA将所有图标保存为PNG文件?

部分ImageMSO http://rabu4g.bay.livefilestore.com/y1p2SF1q63YjDjPNmK4nYMW2644r9AO2aAsE__vBYznTeXD0b4SJUU0O07fxPD0r7aO_83gCJ-8OfcOQsFKG0fQMRnTEneBU1TI/Capture.PNG

以下代码是用于从ImageMSO获取图像的代码.

Application.CommandBars.GetImageMso([name], [width], [height])
Run Code Online (Sandbox Code Playgroud)

我可以将所有内容显示为PictureBox控件并将excel文件另存为网页.但是,每个图标质量都很低.

此外,我尝试使用以下代码创建用于导出为Bitmap对象的C#Excel加载项项目.但我发现它无法导出为半透明的PNG.

stdole.IPictureDisp p = Application.CommandBars.GetImageMso(fileName, size, size);
Bitmap b = Bitmap.FromHbitmap((IntPtr)p.Handle, (IntPtr)p.hPal);
Run Code Online (Sandbox Code Playgroud)

PS.我想将所有图标保存为PNG格式,因为我需要使用它的半透明功能.它允许我在大多数背景颜色上使用所有图标而不是白色背景.

Alt*_* XL 8

我在Excel开发中经常使用ImageMso.偶然发现了这篇文章后,我更进了一步,将一个软件包放在一起,直观地搜索,提取并保存Microsoft Excel中的图标作为文件,或者复制并粘贴(带有alpha通道透明度)到另一个应用程序.我还从各种来源编制了一个包含8,899个不同ImageMso名称的列表.我希望其他人能发现这个有用.

Microsoft Office图标(ImageMSO)图库和提取

运行Windows 8的Microsoft Excel 2013上的ImageMSO图库


cav*_*ing 0

所有 PNG 文件都可以在这里找到这些都是 PNG 格式。很好的编程!(这里还提供了一个不错的 ZIP 存档)ZIP 存档包含所有 17 个 Excel 图标。

当您使用 GetImageMso 方法时,您最终会得到该对象的 IPicture 接口。IPicture 界面访问适合保存到原始格式文件的图标 - .ICO、.WMF 或 .BMP 不支持 PNG 格式。以下链接解释了为什么这不能直接实现:

http://msdn.microsoft.com/en-us/library/aa434604.aspx(msoGetImageMso 方法) http://msdn.microsoft.com/en-us/library/ms680761%28VS.85%29.aspx (IPicture接口) http://msdn.microsoft.com/en-us/library/ms694504%28VS.85%29.aspx (另存为文件方法)

但是,使用更复杂的方法将产生您想要的结果:

http://blogs.msdn.com/mshneer/archive/2007/10/10/preserving-transparency-when-rendering-office-icons.aspx