Excel 2007图表图案填充

在Excel 2007中,图表图案填充已不可用。但是,如果在一个黑白打印机上打印图表,则这项功能是有用的。虽然在以前Excel版本中创建的图表将继续显示图案填充,但是没有办法使用Excel 2007 UI来应用图案填充。
Microsoft的Eric Patterson通过创建一个加载项解决了这个问题,您可以参考下面的译文。
这个加载项在图表工具的格式选项卡中创建了一个新的名为Patterns的组。该组中有一个控件,当单击该控件时,显示应用到所选图表元素中可用的图案。
addintab1111
addintab12222 
主要为黑白打印机来使用图案填充。
- - - - - - - - - - - - - - - - - - - - -
下文将讨论在图表数据点中应用图案填充,并包括一个示例加载项。
概述
在Excel 2007中,对图表元素应用图案填充的界面(有利于应用图片和纹理填充的界面)已被移除了。在以前的Excel版本中带有图案填充的图表格式仍然保留,并且在Excel里打开该图表时会显示图案填充。
这里是一个带有应用了图案填充的图表:
FormatChart2 
Excel 2007中移除了可应用图案填充的界面,但可以通过Excel的对象模型来支持这些图案填充。FillFormat.Patterned方法可用于对图表元素应用图案填充,例如系列中的数据点。本文将介绍如何使用该对象模型来创建上面显示的图表,也提供了对图表元素应用图案填充的界面的示例加载项。
带有RibbonX和VBA代码的示例加载项点击这里下载。
使用Visual Basic立即窗口应用图案
让我们以一个示例饼图开始,来演示如何应用图案格式。创建该图表之后,单击Q1饼图切片将立即选择整个系列,并选择Q1数据点。如下图所示:
originalchart 
当选择了Q1数据点后,通过按Alt+F11激活VBE。在VBE中,按Ctrl+G显示并移动到立即窗口。
在立即窗口里,输入下列语句并按回车键:
selection.fill.patterned (4)
这将对所选图表元素显示第4个索引的图案。此时,图表将更新如下:
FormatChart1
重复该过程
对其它的3个数据点重复上面的过程来完成图表。依次选择它们,切换到VBE,然后为每个数据点输入Selection.Fill.Patterned命令。这里,分别为Q2、Q3和Q4使用索引值为26、15和12代表的图案。此时,该图表如下所示:
FormatChart2
示例加载项
接下来,演示如何创建一个加载项,在Excel里使用库控件快速地应用图案填充。
RibbonX
我们将使用RibbonX代码开始。如果不熟悉RibbonX,那么简要的解释是RibbonX是定义Ribbon外观的XML。在这里,RibbonX将定义想要放置库的位置,以及在该库中的项目(包括图片)。关于RibbonX的更多信息,请参见本站中的相关技术文章。
我们将创建的RibbonX驻留在该文档中,必须使用工具获取文档中的RibbonX。本例中使用的工具是“Office 2007 Custom UI Editor”,具体介绍请参见《定制Excel 2007功能区的工具和资源》。
下载并安装该工具后,打开前面所下载的“PatternUI.xlam”文档,将看到下图所示的界面:
UITool 
要创建这段XML,在UI编辑器里使用“插入图片”命令开始并选择以前已创建的每个图案填充的图片。要确保命名这些文件,与对象模型里的图案的索引值相匹配。
一旦添加了图标,然后在Ribbon XML里输入指定的图表选项卡(ChartToolsFormat)和组名(Patterns)。在功能区里的Patterns(图案)组里,指定包括在库里的项目,与之前已添加的图标一致。这里选择库的大小为8列和7行。
这是一段XML,重复Gallery(库)的所有54个元素:
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>
 <ribbon>
  <contextualTabs>
   <tabSet idMso=”TabSetChartTools” >
    <tab idMso=”TabChartToolsFormat” >
     <group id=”customGroup” label=”Patterns” insertAfterMso=”GroupShapeStyles”>
      <gallery id=”PatternGallery” image=”Pattern54″ size =”large” columns=”8″ rows=”7″ onAction=”InsertPattern” >
         <item id=”Pattern1″ image=”Pattern1″/>
         <item id=”Pattern2″ image=”Pattern2″/>
         <item id=”Pattern3″ image=”Pattern3″/>
       .
       .
       .
在输入所有的Ribbon XML之后,使用UI编辑器中的“产生回调(Generate Callbacks)”命令,会产生下面的回调:
callbacks11 
这个回调可以被输入到VBE中的模块里。
VBA代码
在VBA的代码模块里,只需要添加2行代码到回调中。第1行是一个非常简单的错误检查,避免万一企图使用库来应用格式而选择无效的对象时产生的错误。第2行是与上面输入到立即窗口里相同的命令。在本实例中,Patterned方法的参数是“index+1”。Index是返回的库的索引。索引值基于0,因此使用“+1”来确保库索引值与图案索引值相匹配。
‘Callback for PatternGallery onAction
Sub InsertPattern(control As IRibbonControl, id As String, index As Integer)
    On Error Resume Next
    Selection.Fill.Patterned (index + 1)
End Sub
完成该加载项
最后一步是使用“另存为”命令作为一个加载项保存该文件。
最后的成果
定义RibbonX和VBA代码之后,打开该加载项。选择一个图表后,在“图表工具”的“格式”选项卡中的“Pattens”组里显示图案下拉表。要使用某图案,则先选择一个图表系列或数据点,然后单击其中的一个库项目。


提示:您可以在评论中使用HTML标签,且任何与HTML标签相同的符号都会被理解为HTML标签并以相应的格式显示.如果您的评论中有代码,可以使用相应的标签,例如,如果有VB或VBA代码,则可以使用[vb]标签,即[vb]放置的代码[/vb],这样会很清晰地显示代码.

发表评论